Многоадресная рассылка, Обмен сообщениями, ActiveMQ противMSMQ?

StackOverflow https://stackoverflow.com/questions/32851

  •  09-06-2019
  •  | 
  •  

Вопрос

Я работаю над системой обмена сообщениями и уведомлений для наших продуктов.Основными требованиями являются:

  • Стреляй и забудь
  • Постоянный набор сообщений, возможно, обновляющихся, которые будут оставаться там до тех пор, пока отправитель не скажет их удалить

Библиотеки будут написаны на C #.Весна.NET только что выпустила веховую сборку с множеством приятных абстракций обмена сообщениями, и это здорово - я планирую широко ее использовать.Мой основной вопрос сводится к вопросу о брокерах сообщений.Моя архитектура будет выглядеть примерно так: приложение -> очередь брокера сообщений -> серверное приложение, которое прослушивает, отправляет все сообщения туда, куда им нужно, и обрабатывает жизненный цикл этих долгоживущих сообщений -> очередь брокера сообщений или тема -> приложения для прослушивания.

Наконец, вопрос:Какой брокер сообщений мне следует использовать?Я предвзят к ActiveMQ - Мы использовали его в нашем последнем проекте, и нам очень понравилось.Я действительно не могу придумать ни одного удара по нему, за исключением того, что это Java, и потребуется, чтобы Java была установлена где-то на сервере, и это может быть трудно продать некоторым людям, которые будут использовать этот сервис.Другой вариант, который я рассматривал, - это MSMQ.Я предвзято отношусь к нему по какой-то неизвестной причине, и, похоже, у него также нет отличной поддержки многоадресной рассылки.

Кто-нибудь использовал MSMQ для чего-то подобного?Есть какие-нибудь плюсы или минусы, вещи, которые могли бы повлиять на голосование в ту или иную сторону?

И последнее, мы используем .NET 2.0.

Это было полезно?

Решение

Я немного предвзят, когда работаю над ActiveMQ но практически все преимущества, перечисленные для MSMQ выше, на самом деле применимы и к ActiveMQ.

Некоторые дополнительные преимущества ActiveMQ включают в себя

Основным недостатком, о котором вы упоминаете, является то, что брокер ActiveMQ написан на Java;но вы можете запустить его на IKVM как сборку .net, если вы действительно хотите, или запустить его как службу Windows, или скомпилировать его в DLL / EXE через GCJ.MSMQ может быть написан на .NET, а может и не быть - но на самом деле не имеет большого значения, как он правильно реализован?

Независимо от того, выберете ли вы MSMQ или ActiveMQ, я бы рекомендовал, по крайней мере, рассмотреть возможность использования NMS API который, как вы говорите, отлично интегрирован в Spring.NET.Существует реализация этого API на MSMQ, а также реализации для TibCo, ActiveMQ и STOMP, которые будут поддерживать любого другого поставщика JMS через Подключать.

Таким образом, выбрав NMS в качестве своего API, вы избежите привязки к какой-либо запатентованной технологии и сможете легко переключать поставщиков обмена сообщениями в любой момент времени;вместо того, чтобы запирать весь ваш код в проприетарном API

Другие советы

Плюсы для MSMQ.

  • Он встроен в Windows
  • Он поддерживает транзакции, он также поддерживает очереди без транзакций
  • Это действительно легко настроить
  • Интеграция рекламы
  • Это быстро, но вам нужно было бы сравнить ActiveMQ и MSMQ для вашего трафика, чтобы узнать, какой из них быстрее.
  • .NET поддерживает это изначально
  • Поддерживает огонь и забвение
  • Вы можете заглянуть в очередь, если у вас есть читатели, которые просто посмотрят.не уверен, что вы можете отредактировать сообщение в очереди.

Минусы:

  • Ограничение на размер сообщения в 4 МБ
  • Ограничение на размер очереди в 2 ГБ
  • Элементы очереди хранятся на диске
  • Это не основной продукт MS, документы немного ненадежны, или, по крайней мере, прошло несколько лет с тех пор, как я им пользовался.

Вот хороший блог для MSMQ

Взгляните на zeromq.Это одна из самых быстрых очередей сообщений в мире.

Я предлагаю вам взглянуть на корпоративную службу обмена сообщениями TIBCO - EMS, которая представляет собой высокопроизводительный продукт для обмена сообщениями, поддерживающий многоадресную рассылку, маршрутизацию, поддерживающий спецификацию JMS и предоставляющий общеорганизационные функции, включая ваши требования, такие как защита от срабатывания и сохранение сообщений с использованием файла / базы данных с использованием общего состояния.

Для справки, FEDEX работает на базе TIBCO EMS в качестве инфраструктуры обмена сообщениями.

http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp

Есть много других ссылок, если я их приведу, вы действительно будете удивлены.

На этой арене есть так много вариантов...

Бесплатно:MantaRay - одноранговая система, полностью совместимая с JMS.Интересной частью Mantaray является то, что вам нужно только определить, куда отправляется сообщение, и MantaRay направляет его любым способом, который доставит ваше сообщение по назначению - так оно более устойчиво к сбоям отдельных узлов в вашей структуре обмена сообщениями.

Оплаченный:На своей повседневной работе я администрирую систему обмена сообщениями IBM WebSphere MQ с несколькими сотнями узлов и нахожу ее очень хорошей.Мы также недавно приобрели Tibco EMS, и, похоже, им тоже будет довольно приятно пользоваться.

Пол/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top