Кроссплатформенная, мультиязычная система обмена сообщениями? - PullRequest
11 голосов
/ 03 ноября 2008

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

Я ищу систему обмена сообщениями, которая предлагает привязки (по крайней мере) на C #, Java и Python и поддерживает шаблоны обмена сообщениями, такие как публикация-подписка, гарантированная доставка, выборочный приемник (например, просмотр в .Net Messaging).

Насколько я понял, в JMS или .Net Messaging нет ничего плохого, просто они предназначены только для .Net / Java.

Система должна дать мне контроль над тем, какой транспортный механизм (сокеты, очереди сообщений и т. Д.) Использовать при настройке канала. Я хочу иметь возможность как масштабировать до удаленных машин, так и ускорять работу с местными транспортными средствами.

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

О да, и я хотел бы иметь дополнительное шифрование для каждого канала или для каждого сообщения.

ETA: Спасибо за все быстрые ответы. Сейчас я работаю над документами и пропагандой. Кто-нибудь использовал приведенные ниже технологии и для чего / с какими результатами?

Ответы [ 8 ]

9 голосов
/ 03 ноября 2008

ActiveMQ

http://activemq.apache.org/cross-language-clients.html

Поддерживает все следующие протоколы

  • OpenWire
  • 1011 * ОТДЫХ *
  • Stomp
  • WS Notification
  • XMPP
  • AMQP

Спасибо Пол

2 голосов
/ 03 ноября 2008

Как уже упоминал Пол, попробуйте ActiveMQ , который поддерживает множество языковых клиентов и проводных протоколов.

BTW ActiveMQ 6.x, вероятно, будет использовать буферы протокола Google в качестве одного из базовых проводных транспортов:)

Я использовал Apache ActiveMQ во многих проектах с большим успехом. Это самый популярный и мощный брокер сообщений с открытым исходным кодом на сегодняшний день.

Между прочим, в .Net / C # проект ActiveMQ создал NMS API , который является стандартным API для связи с брокерами сообщений на платформе .Net, который теперь интегрирован в Spring.Net

2 голосов
/ 03 ноября 2008

SonicMQ может быть инструментом, который вы ищете. Я знаю, что они имеют большое значение для Progress, но также поддерживают другие языковые альтернативы и являются ведущим игроком в секторе обмена сообщениями.

Sonic Software

1 голос
/ 03 марта 2010

Если вам нужен мультиязычный «стандарт» - то есть вы не привязаны к использованию конкретного брокера / посредника, такого как ActiveMQ, SonicMQ или WebsphereMQ - я настоятельно рекомендую вам взглянуть на стандарт AMQP (http://www.amqp.org) и связанные брокеры (RabbitMQ, QPid, OpenAMQ; см. http://www.amqp.org/confluence/display/AMQP/AMQP+Products).

1 голос
/ 03 ноября 2008

Если вы хотите надежную коммерческую поддержку и интеграцию практически всего, IBM MQ Series, теперь Websphere MQ предоставляет все функции, описанные в ваших требованиях.

Иногда вы делаете то, за что платите ...; -)

1 голос
/ 03 ноября 2008

Вы можете использовать ESB (Enterprise Service Bus), как Mule . Идея состоит в том, что вы отправляете свои сообщения на шину любым удобным для вас способом (JMS, http, электронная почта), и шина выполняет маршрутизацию за вас. Я не знаю, есть ли привязки .NET, но даже если их нет, вы можете создать свою собственную, используя механизм расширения. Конечно, это означает, что вам нужно где-то настроить автобус.

1 голос
/ 03 ноября 2008

Рассматривали ли вы MPI ?

0 голосов
/ 27 марта 2009

Открытая очередь сообщений (Open MQ) включена в сервер приложений GlassFish и также работает автономно Он запускается через несколько секунд и поддерживает клиента Java и C. Поддержка Stomp в настоящее время находится в разработке в версии 4.4.

...