Альтернативы очереди для MSMQ в Windows?[закрыто]

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

  •  09-06-2019
  •  | 
  •  

Вопрос

Если вы хотите использовать продукт для организации очередей для долговременного обмена сообщениями под управлением Windows, работающий под управлением .NET 2.0 и выше, какие альтернативы MSMQ существуют сегодня?Я знаю об ActiveMQ (http://activemq.apache.org/), и я видел ссылки на WSMQ (указывающие на http://wsmq.net), но сайт, похоже, не работает.

Есть ли какие-то другие альтернативы?

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

Решение

Я не могу сказать достаточно хороших слов о Tibco EMS - реализации спецификации обмена сообщениями Java JMS. Tibco EMS имеет превосходную поддержку для клиентов .NET, включая Compact Framework .NET на WinCE. (У них также есть клиентские библиотеки C).

Итак, если вы создаете гетерогенное распределенное приложение, включающее код обмена сообщениями, работающий в Windows, Unix (AIX / Solaris), Linux или Mac OS X, тогда Tibco EMS - это билет.

Ознакомьтесь с моей статьей здесь:

Использование JMS для разработки распределенного программного обеспечения

Раньше я работал в Microsoft и некоторое время работал с MSMQ. Но вы знаете, Microsoft относится только к Windows. Они зависели от третьих сторон, которые предоставляли клиенты MSMQ для других платформ. Моя встреча с Tibco EMS была намного лучше. Было совершенно очевидно, что Tibco понимает обмен сообщениями гораздо лучше, чем Microsoft. И Tibco приложила усилия для поддержки разнообразных клиентских привязок. Вот почему они в итоге изменили название продукта с Tibco JMS на Tibco EMS (Enterprise Messaging Service).

И я создал гетерогенные программные системы вокруг Tibco EMS. Свернутые клиенты C # .NET Winform, взаимодействующие со средним уровнем Java / JBoss посредством обмена сообщениями Tibco EMS. (А также есть промышленные встраиваемые компьютеры WinCE, использующие клиент Compact Framework .NET Tibco.)

Ссылки на мои записи JMS

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

Не может быть "наилучшей практикой" совет здесь ... но исходя из реальных жизненных потребностей и опыта: у нас есть распределенная система, 60 блоков, на которых работают 10 клиентов, все выполняют задачу X, и им нужно взять следующую задачу из очереди. Очередь подается от одного другого «клиента» ...

Мы использовали межпроцессное взаимодействие, мы использовали MSMQ, мы пробовали сервисный брокер ... Это просто не работает в долгосрочной перспективе, потому что вы передаете контроль над своим приложением Microsoft. Это прекрасно работает, пока ваши потребности удовлетворены. это становится адом, когда вам нужно что-то не поддерживается.

Лучшим решением для нас было: использовать таблицу базы данных SQL в качестве очереди. Не изобретайте колесо там, потому что вы будете делать ошибки (блокировки). Там есть информация о том, как это сделать, это очень просто, и мы обработали более 200 КБ сообщений за сутки (с 60x10 = 600 одновременных операций чтения и записи в очередь). Это в дополнение к тому же SQL-серверу, который обрабатывает остальную часть приложения ...

Некоторые причины, по которым MSMQ не работает:

<Ол>
  • Когда вам нужно изменить логику очереди не на FIFO, а на что-то вроде "самого старого КРАСНОГО сообщения" " или "самое старое СИНЕЕ сообщение" ты не можешь сделать это (Я знаю, что скажут люди, вы можете сделать это, имея красную очередь и синюю очередь .... Но что, если число / типы очередей динамически основаны по тому, как приложение администрируется и меняется ежедневно?)

  • Он добавляет точку сбоя и кошмар развертывания (очередь является точкой сбоя, и вам нужно иметь дело с установкой правильных разрешений для всех ящиков для чтения / записи сообщений и т. д.) в корпоративном программном обеспечении, которое вы платите кровью. для таких вещей). SQL-сервер ... все клиенты уже пишут / читают из БД, это всего лишь еще одна таблица.

  • Инфраструктура RabbitMQ , похоже, здесь упущена. Если люди все еще заботятся, у него действительно есть кодовая база .NET 2.0, и это идет с привязкой WCF, подобной netMsmqBinding. Для связывания требуется, по крайней мере, .NET 3.0, и он имеет больше возможностей, чем встроенный netMsmqBinding. В довершение всего, это Mono friendly. Это стоит посмотреть.

    Почему бы не использовать ActiveMQ? :)

    Если стоимость не является проблемой (существует также Экспресс-артикул) тогда взгляните на гориллу весом 800 000 фунтов.WebSphere MQ (серия MQ).Он работает практически на любой платформе и поддерживает так много различных менеджеров очередей и шаблонов обмена сообщениями, что перечислять их здесь действительно неуместно.

    Если важна высокая доступность, стоит обратить внимание на Amazon SQS. Там нет много дополнительных накладных расходов, если сообщения приходят из разных физических местах. Дешево и масштабируемо!

    Redis - еще одна популярная порода на этой платформе. Проверьте их реализацию на основе Set, а также шаблон Pub / Sub. Это выглядит многообещающе

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