Pergunta

Quero usar o ActiveMQ como um corretor de mensagens que se comunica entre um componente C ++ e um componente Java em dois processos. Por exemplo. O componente C ++ é o editor e o componente Java é o assinante (talvez vários assinantes). Eu olho para o site ActiveMQ e ele menciona a ferramenta OpenWire e o ActiveMQ-CPP. No entanto, todos os exemplos nos sites estão usando o mesmo idioma para produtor e consumidor.

Minhas perguntas são:

1.Cão ActiveMQ funcionar para produtor/consumidor em diferentes idiomas?

2. Em diferentes processos? Como?

Foi útil?

Solução

O OpenWire é um protocolo e, portanto, pode teoricamente ser implementado em qualquer lugar, mas isso não significa que existam implementações completas para cada idioma. A impressão fina do cliente C ++ diz:

"A partir da versão 2.0, o ActiveMQ -CPP suporta o protocolo OpenWire V2, com algumas exceções. ObjectMessage - não podemos reconstruir o (s) objeto (s) contido em um objeto em C ++; portanto, se o seu aplicativo for subscrito a uma fila ou tópico que tenha Um ObjectMessage enviado a ele, você receberá a mensagem, mas não poderá extrair um objeto dele. "

Portanto, se você deseja enviar dados entre os processos, escreva seus componentes C ++ e Java para usar a API (certificando-se de não usar os tipos de objeto se estiver usando o ActiveMQ-CPP). Em seguida, execute o servidor ActiveMQ ... diga aos seus programas para se conectar a ele e ele deve funcionar.

Mas se você está realmente apenas tentando fazer a comunicação interprocessante quando controla os dois clientes, isso pode ser um pouco pesado. Você pode estar interessado nas respostas a Qual é a melhor abordagem para o IPC entre Java e C ++? e Boa alternativa à memória compartilhada IPC para aplicativos Java/C ++ no Linux

Outras dicas

Diretamente da página inicial do 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

Nós o testamos com PHP (usando Stomp) e Java (usando o OpenWire).

Em relação aos processos: os vários produtores e consumidores podem, obviamente, estar em processos totalmente diferentes, comunicando -se ao EG TCP ou SSL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top