Какую технологию следует использовать для реализации надежного абонента, доступного из.NET?

Предполагая, что проект "зеленого поля", какой выбор технологий, библиотек, промежуточного программного обеспечения и т. Д. Облегчит реализацию обмена сообщениями "публикация-подписка" с надежными подписками в Windows и.NET? Я нашел WCF Peer Channel, используя Google, который, кажется, делает большую часть того, что мне нужно, но я не думаю, что он гарантирует порядок сообщений и не сохраняет сообщения на диск для надежности. Microsoft говорит, что эти возможности могут быть многоуровневыми, но я искал что-то, что уже имеет их.

Списки рассылки MSMQ близки к тому, что я хочу, но я бы предпочел что-то, где уровень обмена сообщениями не должен был знать обо всех клиентах заранее.

Количество подписчиков невелико, вероятно, менее 20.

И издатели, и подписчики реализованы на C#/.NET и работают под Windows.

РЕДАКТИРОВАТЬ: Я рассматриваю предложения по промежуточному программному обеспечению и сервисной шине, ориентированные на сообщения. Я знаком с корпоративными продуктами в этом пространстве - я действительно ищу что-то простое и легкое. Требуется время, чтобы посмотреть на каждый продукт, но я постараюсь обобщить мои выводы.

5 ответов

Решение

Я сделал то же самое (издатели и потребители в C# на.Net), с большим количеством долговременных подписок, и я фактически использовал SonicMQ для этого. Несмотря на то, что он считается провайдером JMS, он имеет чистые клиентские библиотеки.net, которые очень похожи на API-интерфейсы JMS, которые работают исключительно хорошо.

Я очень хорошо знаком с RabbitMQ, и в настоящее время он не поддерживает долговременные подписки, если они исчерпывают пространство памяти брокера (поэтому он не может действительно передавать их на диск). Это отличное решение для случая, когда ваш поток сообщений (производители и потребители) умещается в памяти, но не тогда, когда вам нужна постоянная система долговременной подписки.

В рамках этого проекта я оценил ActiveMQ, Tibco EMS и FioranoMQ, и SonicMQ был, безусловно, лучшим решением, особенно для клиентов C#. Это дорого, но стоит посмотреть.

Вы смотрели на RabbitMQ? Не могу сказать, что сам испытал это на себе, но когда ребята из Rabbit выступили с технологическим докладом на работе, они, казалось, знали, о чем говорили:)

Как насчет того, чтобы посмотреть на шину сообщений типа архитектуры. Есть несколько реализаций шины с открытым исходным кодом, которые находятся поверх MSMQ.

Используя одну из этих библиотек, ваш сервис может публиковать "события" (сообщения), когда это необходимо. При запуске сервер не нуждается в какой-либо конфигурации, которая заранее сообщает о клиентах. Когда клиенты запускаются, они подписываются на известную конечную точку сервера, и оттуда сервер публикует их всякий раз, когда генерирует сообщение.

Мы написали одноранговую шину сообщений Zebus на основе ZeroMq (транспорт), Cassandra (одноранговое обнаружение и постоянство) и Protobuf (сериализация).

Это открытый исходный код и тестирование производства https://github.com/Abc-Arbitrage/Zebus

Зебус активно развивается и активно использует свое производство.

Apache ActiveMQ также поддерживает.NET (и многие другие языки). Открытый исходный код, а также доступны с коммерческой поддержкой.

http://activemq.apache.org/

Легко установить и настроить. Автоматическое создание адресатов сообщений. Поддерживает одноранговые и публиковать / подписывать модели общения.

Другие вопросы по тегам