Многоадресная передача, обмен сообщениями, ActiveMQ и MSMQ?
Я работаю над системой обмена сообщениями/уведомлениями для наших продуктов. Основные требования:
- Огонь и забыть
- Постоянный набор сообщений, возможно, обновление, чтобы оставаться там до тех пор, пока отправитель не попросит их удалить.
Библиотеки будут записаны на С#. Spring.NET только что выпустил веху-сборку с большим количеством приятной абстракции сообщений, что здорово - я планирую ее широко использовать. Мой основной вопрос сводится к вопросу о брокерах сообщений. Моя архитектура будет выглядеть примерно так: app → Message broker queue → server app, которая прослушивает, отправляет все сообщения туда, где им нужно идти, и обрабатывает жизненный цикл этих долгоживущих сообщений → очередь брокера сообщений или тема → прослушивание приложения.
Наконец, вопрос: какой брокер сообщений я должен использовать? Я склонен к ActiveMQ - Мы использовали его в нашем последнем проекте и любили его. Я не могу думать об одном ударе по нему, кроме того, что это Java, и потребует, чтобы Java был установлен на сервере где-то, и это может быть трудно продать некоторым людям, которые будут использовать эту услугу. Другой вариант, который я рассматривал, - это MSMQ. Я предвзято отношусь к нему по какой-то неизвестной причине, и у него также нет большой поддержки многоадресной рассылки.
Кто-нибудь использовал MSMQ для чего-то подобного? Любые плюсы или минусы, вещи, которые могут повлиять на голосование так или иначе?
Последнее, мы используем .NET 2.0.
Ответы
Ответ 1
Я немного предвзято, поскольку я работаю над ActiveMQ, но в значительной степени все преимущества, перечисленные для MSMQ выше, также применимы к ActiveMQ.
Некоторые дополнительные преимущества ActiveMQ включают
Основной недостаток, который вы упомянули, заключается в том, что брокер ActiveMQ написан на Java; но вы можете запустить его на IKVM как сборке .net, если вы действительно хотите - или запустить его как службу Windows, или скомпилировать его в DLL/EXE через GCJ. MSMQ может быть или не быть написан в .NET - но на самом деле не имеет большого значения, как это реализовано правильно?
Независимо от того, выбираете ли вы MSMQ или ActiveMQ, я бы рекомендовал хотя бы рассмотреть использование StompConnect.
Таким образом, выбрав NMS в качестве вашего API, вы избежите блокировки любой проприетарной технологии - и тогда вы сможете легко переключать поставщиков сообщений в любой момент времени; вместо того, чтобы полностью блокировать ваш код в проприетарном API
Ответ 2
Плюсы для MSMQ.
- Он встроен в Windows
- Он поддерживает транзакции, он также поддерживает очереди без транзакций
- Очень легко настроить
- Интеграция AD
- Это быстро, но вам нужно сравнить ActiveMQ и MSMQ, чтобы ваш трафик знал, что быстрее.
- .NET поддерживает его nativity
- Поддерживает огонь и забывает
- Вы можете заглянуть в очередь, если у вас есть читатели, которые просто смотрят. не уверен, что вы можете редактировать сообщение в очереди.
Минусы:
- ограничение размера сообщения 4 МБ
- Ограничение на размер очереди 2 ГБ
- Элементы очереди хранятся на диске
- Не являющийся основным продуктом MS, документы - это немного некорректно, или прошло несколько лет с тех пор, как я использовал его.
Вот хороший блог для MSMQ
Ответ 3
Посмотрите zeromq. Это одна из самых быстрых очередей сообщений.
Ответ 4
Я предлагаю вам взглянуть на TIBCO Enterprise Messaging Service - EMS, который представляет собой высокопроизводительный продукт обмена сообщениями, который поддерживает многоадресную рассылку, маршрутизацию, поддерживает спецификацию JMS и предоставляет широкие возможности предприятия, включая ваши требования, такие как перезапуск и постоянство сообщений с использованием файла /database с использованием общего состояния.
Как ссылка, FEDEX работает на TIBCO EMS
как его инфраструктуру обмена сообщениями.
http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp
Есть много других ссылок, если я предоставляю, вы действительно будете удивлены.
Ответ 5
На этой арене так много вариантов...
Бесплатно: MantaRay сверстник полностью совместим с системой JMS. Интересная часть Mantaray заключается в том, что вам нужно всего лишь определить, куда идет сообщение, и MantaRay направляет его так или иначе, чтобы получить ваше сообщение для его деления - поэтому он более устойчив к сбоям отдельных узлов в вашей почтовой сети.
Paid: На моей дневной работе я администрирую систему обмена сообщениями IBM WebSphere MQ с несколькими сотнями узлов и нашел, что это очень хорошо. Мы также недавно купили Tibco EMS, и, похоже, будет неплохо также использовать его.
Paul/