Гарантированный обмен 1С с внешними системами через сервер очередей Microsoft MSMQ
Описание решения задачи организации обмена 1С с внешними системами с условием гарантированной доставки сообщений и независимой поддержкой архивов сообщений. Быстрый ответ: сервер очередей Microsoft MSMQ.
- Описание
- Подробнее
Описание
Вводная:
Организовать обмен 1С с внешней системой со следующими условиями и ограничениями:
- Гарантированная доставка сообщений, когда сообщение не может считаться принятым пока не придет ответ от второй системы
- Сервис обмена должен поддерживать архивы сообщений и быть независим как от 1С, так и от внешней системы
- Внешняя система не умеет работать с HTTP сервисами 1С (да бывает и такое)
- 1 сообщение из 1С может быть предназначено сразу нескольким разным внешним системам
В процессе поиска подходящего решения наткнулся на интересные примеры в демо конфигураций 1С «Обмен данными», где приложены примеры работы с сервером очередей сообщений Microsoft MSMQ.
MSMQ – компонент любой современной ОС от Microsoft даже не серверной. Из преимуществ MSMQ: бесплатный, поддерживает транзакции, имеется архив принятых/переданных сообщений, параллельные очереди для разных систем и случаев, тригеры сообщений, возможность авторизации отправителей и получателей сообщений, включая доменную аутентификацию.
Описание решения
В первую очередь нужно инсталировать компонент MSMQ на том компьютере, где будет висеть служба сервера очередей, это может быть, как локальный компьютер, так и любой в сети.
После добавления компонента он будет доступен в разделе Управление компьютером – Службы и приложения – Очередь сообщений.
Создаем частную очередь – имя очереди на английском, без пробелов и спец символов. Как настроить сервер MSMQ: права доступа, место хранения, транзакции, триггеры, размер сообщений, размер хранилища – см. разделы помощи на сайте Microsoft и внимательно читайте в отладке какие ответы будете получать от сервера MSMQ в 1С. Так выглядит очередь сервера MSMQ в который мы из 1с отправили сообщение.
Как реализовано в 1С:
Регистрацию изменений я сделал на своем Плане обмена 1С с ручной регистрацией изменений. Далее примеры кода в модуле объекта Плана Обмена, когда произошло событие регистрации или по расписанию нужно прочитать изменения с сервера сообщений.
Формируем строку XML и передаем серверу MSMQ.