ActiveMQ 中可以通过以下方式实现跨语言和跨平台:
- 跨语言:
- 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
- 跨平台:
- 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。