初次使用ActiveMQ,借助百度(近来常规方式google无法访问)搜索了JMS1.1规范阅读了一下,于是动手开始尝试实现一个消息生产和消费的示例。
言简意赅,先来一个HelloWorld再说!
- 拜访http://activemq.apache.org/ 了解activemq的相关信息,并下载 activemq for windows
- 了解activemq的快速开始的手册,然后启动activemq服务,看到如下图输出,表示启动服务成功
- 默认情况下打开浏览器访问:http://localhost:8161/admin 即可进入activemq的管理界面
下面是通过ActiveMQ实现消息生产和消息消费的具体实现:
如果使用Maven的话可以直接添加依赖:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.9.0</version>
</dependency>
如果不适用Maven只需要添加activemq-all.jar(该jar在下载的activemq的二进制分发包中已经包含)
- 创建一个消息生产进程:
private static String providerAddress = "tcp://localhost:61616";
private static String messageDest = "messageDest";
@Test
public void messageProducer() throws JMSException, InterruptedException {
// 获取连接工厂
ConnectionFactory connectFactory = new ActiveMQConnectionFactory(
providerAddress);
// 获取连接
Connection connection = connectFactory.createConnection();
connection.start();
// 创建会话
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// 创建消息目的地
Destination dest = session.createQueue(messageDest);
// 创建消息提供者
MessageProducer producer = session.createProducer(dest);
// 通过会话创建消息
TextMessage message=session.createTextMessage("Hello World ActiveMQ");
// 发送消息
producer.send(message);
//收尾处理
producer.close();
session.close();
connection.close();
}
通过上面的代码注释,可以看出一个消息生产的过程。
- 创建一个消息消费进程
@Test
public void messageConsumer() throws JMSException {
//创建连接工厂
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(providerAddress);
//获取连接
Connection connection =connectionFactory.createConnection();
connection.start();
//创建会话
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建消息目的地
Destination dest=session.createQueue(messageDest);
//创建消息消费者
MessageConsumer consumer=session.createConsumer(dest);
//接受消息
TextMessage message=(TextMessage) consumer.receive();
System.out.println(message.getText());
//收尾处理
consumer.close();
session.close();
connection.close();
}
消息消费也可以使用消息监听的方式来接受消息,具体使用如下代码:
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
System.out.println(((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
- 启动程序,看效果
上面已经启动了ActiveMQ服务,然后运行测试程序,这样就可以看到控制台打印:Hello World ActiveMQ ;表示消息已经生产成功,并且已经消费。