Хотя у меня был очень горький опыт работы с серией MQ частично из-за того, что она была передана нам (магазин Microsoft) партнерской компанией, использование серии MQ (или любой системы обмена сообщениями) было неотъемлемой частью к заявке.
По сути, мы строили процесс, который обрабатывал всю цепочку поставок для товаров с задержкой заказа. Если у нашего партнера, дистрибьютора, не было товаров, которые хотели получить их клиенты, они отправили бы сообщение на сайт B2B, которое предназначалось бы для потенциальных компаний, которые могли бы выполнить заказ.
Мы создали два разных варианта интеграции. Первым был подход ftp, при котором файлы фиксированной ширины отправлялись туда и обратно через равные промежутки времени, и мы добавили все виды правил, чтобы гарантировать, что мы не пропустили никаких данных.
Второй использовал серию MQ, где сообщения помещались в очередь с гарантированной доставкой. Затем мы выталкивали очередь и обрабатывали сообщения. Система очередей принесла большую пользу, поскольку она позволила нам надежно передавать критические сообщения, что приводило к перемещению реальных денег.
С другой стороны, для той же серии MQ нам пришлось реализовать синхронный запрос для получения информации. Мы хотели, чтобы это было синхронно, потому что наши пользователи, получающие доступ через Интернет, будут ждать получения информации. Делать это на MQ Series было очень интересно и мучительно. Единственная причина, по которой здесь использовался MQ, заключалась в том, что это существующая линия связи, и функциональность запросов уже существовала.
Вторым примером, на этот раз использовавшим MSMQ, был сайт, который собирал информацию из кода dialhome, введенного в клиентские приложения. Код набора номера будет собирать статистику использования функций, как в программе Microsoft SQM. Когда сообщения поступали в веб-службу, мы помещали их в очередь. Тогда у нас могло быть любое количество серверов приложений, которые извлекали сообщения и отправляли их в базу данных, чтобы отправить их на склад.
MSMQ здесь гарантировал, что мы можем обрабатывать пакеты сообщений, быстро помещая их в очередь. Это помогает масштабируемости и надежности системы.