ActiveMQ支持多种协议,包括OpenWire、STOMP、MQTT、AMQP和CORE等。AMQP(Advanced Message Queuing Protocol)是一种开放的标准消息队列协议,支持消息路由、队列和主题等特性,并且可以保证消息的可靠性传输。而CORE是ActiveMQ内部实现的基于nio的传输协议,具有简单、高效、轻便等优点。
在代码中,使用AMQP协议需要导入相应的依赖包,例如以下Maven配置文件:
org.apache.activemq
artemis-amqp-protocol
2.17.0
使用AMQP连接到ActiveMQ示例代码如下:
ConnectionFactory connectionFactory = new JmsConnectionFactory("amqp://localhost:5672");
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("test.queue");
MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage("Hello, World!");
producer.send(message);
而使用CORE协议连接到ActiveMQ则不需要导入额外的依赖包,可以直接使用ActiveMQ提供的核心API进行连接和消息发送,示例代码如下:
TransportConfiguration transportConfiguration = new TransportConfiguration(
"org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory");
ServerLocator serverLocator = ActiveMQClient.createServerLocatorWithoutHA(transportConfiguration);
ClientSessionFactory factory = serverLocator.createSessionFactory();
ClientSession session = factory.createSession();
ClientProducer producer = session.createProducer("test.queue");
ClientMessage message = session.createMessage(true);
message.getBodyBuffer().writeString("Hello, World!");
producer.send(message);