2012-06-25 3 views
3

Мне хорошо известно Java Messaging Service (JMS) для отправки сообщений с Java-кода на Java-код. Также я знаю CORBA, которая представляет собой интеграционное программирование, которое помогает связывать разные языки программирования вместе, чтобы они могли общаться между собой через объекты.Есть ли служба обмена сообщениями между Java и C++, такая как JMS для Java-Java?

Но мне было интересно, существует ли общая служба обмена сообщениями, такая как JMS для разных языков, чтобы отправить сообщение с Java на C++ и наоборот.

ответ

0

Посмотрите на http://qpid.apache.org/

У вас есть как Java/C++ реализаций брокера и те, и другие языки могут обмениваться сообщениями.

0

HornetQ имеет реализацию Stomp и REST, которые могут быть использованы на других языках: TechnicalFaqHornetQ

2

Попробуйте посмотреть на 29 Запад продуктов, таких как UMP. Средние изделия без середины. аналогично Tibco RV. Использует широковещательную, многоадресную и одноадресную рассылку. http://en.wikipedia.org/wiki/29West. Он не требует никаких брокеров. У каждого участника связи должен быть установлен UMP, который будет запускать демон транспорта. Для java существует lib, который реализует спецификацию JMS и позволяет передавать сообщения вверх и вниз по портам.

1

Если вы не хотите, чтобы настроить специальный сервер для этого (и не хотите возиться с сложности монстра, который CORBA), проверить Google протокола буферы https://developers.google.com/protocol-buffers/

Вы можете просто отправить все через сокет (даже при необходимости подключаться к себе), нет необходимости в дополнительных серверах или конфигурациях.

4

Я настоятельно рекомендую начинать с ZeroMQ, если вам не нужны некоторые функции, которые обеспечивает брокерская архитектура, такая как реализация на основе AMQP (например, RabbitMQ).

ZeroMQ имеет множество привязок, включая Java, C#, C++, C, однако это сообщение, поэтому передача объектов между разными языками может лучше поддаваться чему-то вроде OpenDDS. см. Comparing OpenDDS and ZeroMQ Usage and Performance

Good examples of ZeroMQ реализации, от базового до комплекса; например

Basic ZeroMQ Request Reply ZeroMQ Publish Subscribe Complex ZeroMQ Forwarder Proxy

0

Вы можете посмотреть на Spread API (www.spread.org), чтобы увидеть, если она соответствует вашим требованиям.

0

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

0

Служба распространения данных (DDS) является стандартом OMG, той же группы, которая использовала спецификацию CORBA. Стандартными языковыми связями являются C, C++, Java и Ada, но C# и другие доступны. В вашей системе можно смешивать различные языки, а также операционные системы.Структурированные типы данных, которые должны быть распределены, указываются в нейтральном для языка формате (по стандарту подмножество OMG IDL), который затем переводится на языковые интерфейсы и типы данных, которые будут использоваться вашим приложением.

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

Реализации DDS обычно являются высокомасштабируемыми и децентрализованными по своей природе. Компоненты, участвующие в инфраструктуре DDS, развязаны как в пространстве, так и во времени. Некоторые продукты DDS развертываются в многочисленных критически важных для бизнеса системах и системах.

См. this Wikipedia entry за очень краткое введение и список ссылок. Я специализируюсь на DDS более 10 лет, мне все еще нравится, и я думаю, что это одна из самых полезных технологий.

0

TIBCO RV, есть много интерфейс для него, как Java, C, C++, .NET и так далее ..

0

Другое предложение OpenMQ. Внутри пакета он включает файлы заголовков C и файлы библиотек, с которыми вы можете связать свою программу C/C++.

Смежные вопросы