ActiveMQ简单入门(新手必看篇)
ActiveMQ是一个流行的开源消息队列系统,它具有高可用性、高性能、多语言支持等诸多优点,被广泛应用于分布式系统的消息通信场景中。本篇文章将详细讲解ActiveMQ的入门步骤,帮助新手快速上手使用。
安装ActiveMQ
首先需要在官网(http://activemq.apache.org/)上下载ActiveMQ二进制分发包,并解压到本地。然后运行/bin/activemq start
命令启动ActiveMQ。
发送和接收消息
ActiveMQ提供了多种语言的客户端API,本文将使用Java的JMS(Java Message Service)API进行消息发送和接收,以下是演示的完整代码:
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class App {
private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
private static String queueName = "myQueue"; // 消息队列名称
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
// 创建连接
Connection connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建队列
Destination destination = session.createQueue(queueName);
// 创建生产者
MessageProducer producer = session.createProducer(destination);
// 创建消息
TextMessage message = session.createTextMessage("Hello ActiveMQ!");
// 发送消息
producer.send(message);
System.out.println("消息发送成功!");
// 创建消费者
MessageConsumer consumer = session.createConsumer(destination);
// 接收消息
Message receivedMessage = consumer.receive();
// 打印消息内容
System.out.println(((TextMessage) receivedMessage).getText());
// 关闭连接
connection.close();
}
}
该代码演示了如何使用JMS API发送和接收消息,代码注释中包含了详细的解释。
消息持久化
在上面的演示中,我们只实现了简单的消息发送和接收,但是这些消息都仅存在于内存中,程序重启后将会丢失。如果需要将消息持久化到磁盘上,可以使用ActiveMQ提供的消息持久化机制。以下是修改后的代码:
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class App {
private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
private static String queueName = "myQueue"; // 消息队列名称
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
// 创建连接
Connection connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建会话
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
// 创建队列
Destination destination = session.createQueue(queueName);
// 创建生产者
MessageProducer producer = session.createProducer(destination);
// 创建消息
TextMessage message = session.createTextMessage("Hello ActiveMQ!");
// 发送消息
producer.send(message);
System.out.println("消息发送成功!");
session.commit(); // 提交会话以将消息持久化到磁盘
// 创建消费者
MessageConsumer consumer = session.createConsumer(destination);
// 接收消息
Message receivedMessage = consumer.receive();
// 打印消息内容
System.out.println(((TextMessage) receivedMessage).getText());
// 关闭连接
connection.close();
}
}
在上述代码中,我们将会话创建方式修改为“开启消息事务”,并在发送消息后使用session.commit()
命令提交会话以将消息持久化到磁盘上。
示例1:使用Spring JMS Template发送和接收消息
以下是演示如何使用Spring JMS Template发送和接收消息的代码:
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.jms.core.JmsTemplate;
public class App {
private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
private static String queueName = "myQueue"; // 消息队列名称
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
// 创建JMS Template
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(connectionFactory);
// 发送消息
jmsTemplate.send(queueName, session -> session.createTextMessage("Hello ActiveMQ!"));
System.out.println("消息发送成功!");
// 接收消息
String receivedMessage = (String) jmsTemplate.receiveAndConvert(queueName);
// 打印消息内容
System.out.println(receivedMessage);
}
}
该代码使用了Spring JMS Template简化了JMS API的使用,代码注释中包含了详细的解释。
示例2:使用ActiveMQ发送和接收非文本消息
以下是演示如何使用ActiveMQ发送和接收非文本消息的代码:
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class App {
private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
private static String queueName = "myQueue"; // 消息队列名称
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
// 创建连接
Connection connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建队列
Destination destination = session.createQueue(queueName);
// 创建生产者
MessageProducer producer = session.createProducer(destination);
// 创建消息
BytesMessage message = session.createBytesMessage();
message.writeBytes("Hello ActiveMQ!".getBytes());
// 发送消息
producer.send(message);
System.out.println("消息发送成功!");
// 创建消费者
MessageConsumer consumer = session.createConsumer(destination);
// 接收消息
Message receivedMessage = consumer.receive();
// 打印消息内容
BytesMessage bytesMessage = (BytesMessage) receivedMessage;
byte[] buffer = new byte[(int) bytesMessage.getBodyLength()];
bytesMessage.readBytes(buffer);
System.out.println(new String(buffer));
// 关闭连接
connection.close();
}
}
该代码演示了如何使用BytesMessage发送和接收字节流类型的消息,其中的代码注释中包含了详细的解释。
总结
本篇文章详细讲解了ActiveMQ的入门步骤,并提供了多个演示的代码示例,帮助新手快速上手使用ActiveMQ。希望本文能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ActiveMQ简单入门(新手必看篇) - Python技术站