Многоадресная рассылка, Обмен сообщениями, ActiveMQ противMSMQ?
Вопрос
Я работаю над системой обмена сообщениями и уведомлений для наших продуктов.Основными требованиями являются:
- Стреляй и забудь
- Постоянный набор сообщений, возможно, обновляющихся, которые будут оставаться там до тех пор, пока отправитель не скажет их удалить
Библиотеки будут написаны на 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, и, похоже, им тоже будет довольно приятно пользоваться.
Пол/