Кроссплатформенная, многоязычная система обмена сообщениями?
-
06-07-2019 - |
Вопрос
Я разрабатываю набор приложений, которые работают вместе для создания системы обработки данных измерений.Есть несколько причин, по которым я хочу, чтобы они были слабо связаны, и система должна быть расширяемой третьими сторонами, чтобы приложения были связаны между собой с помощью обмена сообщениями.
Я ищу систему обмена сообщениями, которая предлагает привязки (по крайней мере) на C #, Java и Python и поддерживает шаблоны обмена сообщениями, такие как публикация-подписка, гарантированная доставка, выборочный потребитель (например, Peek in.Обмен сетевыми сообщениями).
Насколько я смог выяснить, нет ничего плохого в JMS или .Net Messaging, просто они предназначены только для .Net / Java.
Система должна предоставить мне контроль над тем, какой транспортный механизм (сокеты, очереди сообщений и т.д.) Использовать при настройке канала.Я хочу иметь возможность как масштабироваться на удаленных машинах, так и ускорять работу с местными транспортными средствами.
Если я не смогу найти ничего подходящего, мне придется сделать что-нибудь свое.Я бы, вероятно, использовал буферы протокола Google для сериализации.Если у кого-нибудь есть другие рекомендации по вариантам технологии, обращайтесь.
О, да - и я хотел бы иметь дополнительное шифрование для каждого канала или для каждого сообщения.
ETA:Спасибо за все быстрые ответы.Сейчас я прорабатываю свой путь через docs & propaganda.Использовал ли кто-нибудь приведенные ниже технологии и для чего / с какими результатами?
Решение
activemq
http://activemq.apache.org/cross-language-clients.html
Поддерживает все следующие протоколы
- Открытый провод
- ОТДЫХ
- Топать
- Уведомление WS
- XMPP
- AMQP
Спасибо Пол
Другие советы
SonicMQ может быть инструментом, который вы ищете. Я знаю, что они имеют большое значение для Progress, но они также поддерживают другие языковые альтернативы и являются ведущим игроком в секторе обмена сообщениями.
Как упоминал Пол, попробуйте ActiveMQ , который поддерживает множество языковых клиентов и проводных протоколы. р>
BTW ActiveMQ 6.x, вероятно, будет использовать буферы протокола Google в качестве одного из базовых проводных транспортов:)
Я использовал Apache ActiveMQ во многих проектах с большим успехом. Это большинство популярный сегодня и мощный брокер сообщений с открытым исходным кодом.
Кстати, в .Net / C # проект ActiveMQ создал API NMS , который является стандартным API для связи с брокерами сообщений на платформе .Net, которая теперь интегрирована в Spring.Net
Рассматривали ли вы MPI ?
Вы можете использовать ESB (Enterprise Service Bus), например Mule . Идея состоит в том, что вы отправляете свои сообщения на шину любым удобным для вас способом (JMS, http, электронная почта), и шина выполняет маршрутизацию за вас. Я не знаю, есть ли привязки .NET, но даже если их нет, вы можете создать свою собственную, используя механизм расширения. Конечно, это означает, что вам нужно где-то настроить автобус.
Если вам нужна надежная коммерческая поддержка и интеграция практически всего, IBM MQ Series, теперь Websphere MQ предоставляет все функции, описанные в ваших требованиях.
Иногда вы делаете то, за что платите ...; -)
Если вы хотите многоязычный " стандартный " - что означает, что вы не привязаны к использованию конкретного брокера / посредника, такого как ActiveMQ, SonicMQ или WebsphereMQ - я настоятельно рекомендую вам взглянуть на стандарт AMQP ( http://www.amqp.org ) и связанные с ним брокеры (RabbitMQ, QPid, OpenAMQ; см. http://www.amqp.org/confluence/display/AMQP/AMQP+Products ). Р>
Открыть очередь сообщений (Open MQ) включена в сервер приложений GlassFish и также работает на стенде -в одиночестве. Он запускается через несколько секунд и поддерживает клиента Java и C. Поддержка Stomp в настоящее время находится в разработке в версии 4.4.