Издатель и подписчик ActiveMQ на нескольких языках (C++ Java)

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

Вопрос

Я хочу использовать ActiveMQ в качестве брокера сообщений, обменивающегося данными между компонентом C++ и компонентом Java в двух процессах.Например.Компонент C++ является издателем, а компонент Java — подписчиком (подписчиков может быть несколько).Я смотрю веб-сайт ActiveMQ, и там упоминаются инструменты OpenWire и ActiveMQ-CPP.Однако все примеры на веб-сайтах используют один и тот же язык как для производителя, так и для потребителя.

Мои вопросы:

1.Может ли ActiveMQ работать для производителя/потребителя на разных языках?

2.В разных процессах?Как?

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

Решение

OpenWire — это протокол и, следовательно, теоретически может быть реализован где угодно, но это не означает, что полные реализации существуют для каждого языка.Мелкий шрифт клиента C++ гласит:

«Начиная с версии 2.0, ActiveMQ-CPP поддерживает протокол OpenWire v2, за некоторыми исключениями.ObjectMessage — мы не можем восстановить объект(ы), содержащиеся в ObjectMessage в C++, поэтому, если ваше приложение подписано на очередь или тему, в которую отправлено ObjectMessage, вы получите сообщение, но не сможете извлечь объект. от него."

Поэтому, если вы хотите отправлять данные между процессами, вы пишете свои компоненты C++ и Java для использования API (не используйте типы ObjectMessage, если вы используете ActiveMQ-CPP).Затем запустите сервер ActiveMQ...скажите своим программам подключиться к нему, и все должно работать.

Но если вы на самом деле просто пытаетесь осуществлять межпроцессное взаимодействие, управляя обоими клиентами, это может быть немного сложно.Возможно, вас заинтересуют ответы на Каков наилучший подход для IPC между Java и C++? и Хорошая альтернатива IPC с общей памятью для приложений Java/C++ в Linux.

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

Непосредственно с главной страницы ActiveMQ:

Supports a variety of Cross Language Clients and Protocols from Java, C, C++, C#, Ruby, Perl, Python, PHP

* OpenWire for high performance clients in Java, C, C++, C#
* Stomp support so that clients can be written easily in C, Ruby, Perl,
  Python, PHP, ActionScript/Flash, Smalltalk to talk to ActiveMQ as well 
  as any other popular Message Broker

Мы протестировали его с PHP (с использованием Stomp) и Java (с использованием OpenWire).

По поводу процессов:различные производители и потребители, конечно, могут участвовать в совершенно разных процессах, взаимодействуя, например, через TCP или SSL.

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