Издатель и подписчик ActiveMQ на нескольких языках (C ++ Java) - PullRequest
2 голосов
/ 22 января 2010

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

Мои вопросы:

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

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

Ответы [ 2 ]

2 голосов
/ 22 января 2010

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

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

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

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

0 голосов
/ 29 января 2010

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

Supports a variety of Cross Language Clients and Protocols from Java, C, C++, C#, Ruby, Perl, Python, PHP</p> <pre><code>* 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.

...