ActiveMQ中如何实现跨语言和跨平台?

ActiveMQ 中可以通过以下方式实现跨语言和跨平台:

  1. 跨语言:
  • ActiveMQ 支持多种客户端,可以由不同语言编写的客户端共同消费消息:
  • Java:使用 JMS API 访问
  • C/C++:使用 CMS C API 访问
  • .Net:使用 NMS .Net API 访问
  • Python:使用 CMS Python API 访问
  • PHP:使用 CMS PHP API 访问
  • 等等
  • 示例 Java 和 .Net 客户端:

Java 生产者:

ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection conn = cf.createConnection();  

Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = sess.createProducer(sess.createQueue("example.queue"));
producer.send(sess.createTextMessage("Hello")); 

.Net 消费者:
csharp
ConnectionFactory cf = new NMSConnectionFactory("tcp://localhost:61616");
IConnection conn = cf.CreateConnection(); 
conn.Start();  

ISession sess = conn.CreateSession(AcknowledgementMode.AutoAcknowledge);
IQueue queue = sess.GetQueue("example.queue");
IMessageConsumer consumer = sess.CreateConsumer(queue);  

Message message = consumer.Receive();
string text = message.NMSBodyToString();  // Hello
  1. 跨平台:
  • ActiveMQ 支持多平台部署:
  • Windows/Linux 安装 ActiveMQ
  • Docker 部署 ActiveMQ
  • 用各语言编写的客户端可以跨平台消费消息
  • 示例 Docker 部署 ActiveMQ:
docker run -it --rm \
  -p 8161:8161 -p 61616:61616 \
  -e ACTIVEMQ_ADMIN_PASSWORD=admin \
  -v $PWD/activemq.conf:/opt/activemq/conf/activemq.xml \  
  webcenter/activemq:5.15.9

此设置会暴露 Web 端口 8161 和 TCP 端口 61616,使用 activemq.conf 配置文件启动 ActiveMQ。