ActiveMQ editore e sottoscrittore in più lingue (C ++ Java)
Domanda
Voglio usare ActiveMQ come message broker comunicare tra un componente C ++ e un componente Java in due processi. Per esempio. componente C ++ è l'editore e il componente Java è l'abbonato (là forse più sottoscrittori). Guardo sito ActiveMQ e si menziona lo strumento OpenWire e ActiveMQ-CPP. Tuttavia, tutti gli esempi sui siti web utilizzano lo stesso linguaggio per il produttore e del consumatore.
Le mie domande sono:
1.Can ActiveMQ lavoro per il produttore / consumatore in lingue diverse?
2.In diversi processi? Come?
Soluzione
OpenWire è un protocollo e, quindi, può teoricamente essere realizzato ovunque, ma questo non significa che esistono implementazioni complete per ogni lingua. La stampa fine del client C ++ dice:
"Dalla versione 2.0, ActiveMQ-CPP supporta il protocollo v2 OpenWire, con poche eccezioni. ObjectMessage - Non possiamo ricostruire l'oggetto (s) contenuta in un'ObjectMessage in C ++, quindi se la vostra applicazione è sottoscritto a una coda o un argomento che ha un ObjectMessage inviato ad esso, si riceverà il messaggio, ma non sarà in grado di estrarre un oggetto da esso. "
Quindi, se si desidera inviare i dati attraverso i processi, si scrive il C ++ e componenti Java per utilizzare l'API (facendo attenzione a non utilizzare i tipi ObjectMessage se si sta utilizzando ActiveMQ-CPP). Quindi eseguire le ActiveMQ server ... dite ai vostri programmi di connettersi ad esso, e dovrebbe funzionare.
Ma se si sta in realtà solo cercando di fare comunicazione tra processi, quando si controlla entrambi i client, questo potrebbe essere un po 'pesante. Potreste essere interessati nelle risposte a cosa è l'approccio migliore per IPC tra Java e C ++? e Buona alternativa a IPC memoria condivisa per le applicazioni su Linux Java / C ++
Altri suggerimenti
Direttamente dalla prima pagina di 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
Abbiamo testato con PHP (usando Stomp) e Java (usando OpenWire).
Per quanto riguarda i processi di:. I vari produttori e consumatori possono naturalmente essere in totalmente diversi processi, per esempio la comunicazione su TCP o SSL