(十五)消息队列MQ

本文详细介绍如何使用ActiveMQ消息队列进行消息的发送与接收。包括下载安装ActiveMQ、配置环境、创建Eclipse项目、编写Java代码实现消息生产和消费等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.去官方网站下载:http://activemq.apache.org/

2.运行ActiveMQ

解压缩 apache-activemq-5.14.1-bin,然后双击 apache-activemq-5.14.1\bin\win64\wrapper.exe  (如果你的电脑也是64位 )运行ActiveMQ程序

3.创建Eclipse项目并运行

创建project:ActiveMQ-5.5,

并导入apache-activemq-5.14.1\lib目录下需要用到的jar文件,项目结构如下图所示:

apache activemq (消息队列)入门部署demo

 

生成消息

01 package com.lcl.producer;
02 import javax.jms.Connection;
03 import javax.jms.ConnectionFactory;
04 import javax.jms.Destination;
05 import javax.jms.JMSException;
06 import javax.jms.MessageProducer;
07 import javax.jms.Session;
08 import javax.jms.TextMessage;
09  
10 import org.apache.activemq.ActiveMQConnection;
11 import org.apache.activemq.ActiveMQConnectionFactory;
12  
13 public class JMSproducer {
14     //默认链接用户名
15     private static final String USERNAME =ActiveMQConnection.DEFAULT_USER;
16     //默认链接密码
17     private static final String PASSWORD =ActiveMQConnection.DEFAULT_PASSWORD;
18     //默认链接地址
19     private static final String BROKEURL =ActiveMQConnection.DEFAULT_BROKER_URL;
20     //发送信息的数量
21     private static final int SENDNUM = 10;
22  
23     public static void main(String[] args) {
24         //连接工厂
25         ConnectionFactory connectionFactory;
26         //连接
27         Connection connection = null;
28         //会话 接受或者发送消息的线程
29         Session session;
30         //消息的目的地
31         Destination destination;
32         //消息生产者
33         MessageProducer messageProducer;
34         //实例化连接工厂
35         connectionFactory = new ActiveMQConnectionFactory(JMSproducer.USERNAME, JMSproducer.PASSWORD, JMSproducer.BROKEURL);
36      
37          
38         try {
39             //通过连接工厂获取连接
40             connection = connectionFactory.createConnection();
41             //启动连接
42             connection.start();
43             //创建session
44             session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
45              
46             //创建一个名字为HelloWord的消息队列
47             destination = session.createQueue("HelloWord");
48             //创建消息生产者
49             messageProducer = session.createProducer(destination);
50              
51             //发送消息
52             sendMseeage(session,messageProducer);
53              
54             session.commit();
55         catch (JMSException e) {
56             // TODO Auto-generated catch block
57             e.printStackTrace();
58         }
59      
60      
61     }
62      
63     /**
64      * @throws JMSException
65      *
66     * @Title: sendMseeage
67     * @Description: 发送消息
68     * @param @param session
69     * @param @param messageProducer    消息生产者额
70     * @return void    
71     * @throws
72      */
73     private static void sendMseeage(Session session,
74             MessageProducer messageProducer) throws JMSException {
75         for(int i=0;i<JMSproducer.SENDNUM;i++){
76             //创建一跳文本消息
77             TextMessage message = session.createTextMessage("ActiveMQ 发送消息"+i);
78             System.out.println("发送消息:Activemq 发送消息" + i);
79             messageProducer.send(message);
80         }
81     }
82 }

当消息生成以后去activemq的服务器查看,会发现生成一条消息,未读10条。

 

读取消息:

01 package com.lcl.consumer;
02  
03 import javax.jms.Connection;
04 import javax.jms.ConnectionFactory;
05 import javax.jms.Destination;
06 import javax.jms.JMSException;
07 import javax.jms.MessageConsumer;
08 import javax.jms.Session;
09 import javax.jms.TextMessage;
10  
11 import org.apache.activemq.ActiveMQConnection;
12 import org.apache.activemq.ActiveMQConnectionFactory;
13  
14 public class JMSConsumer {
15     //默认链接用户名
16     private static final String USERNAME =ActiveMQConnection.DEFAULT_USER;
17     //默认链接密码
18     private static final String PASSWORD =ActiveMQConnection.DEFAULT_PASSWORD;
19     //默认链接地址    
20     private static final String BROKEURL =ActiveMQConnection.DEFAULT_BROKER_URL;
21      
22     public static void main(String[] args) {
23         //连接工厂
24         ConnectionFactory connectionFactory;
25         //连接
26         Connection connection = null;
27         //会话 接受或者发送消息的线程
28         Session session;
29         //消息的目的地
30         Destination destination;
31         //消息的消费者
32         MessageConsumer messageConsumer;
33         //实例化连接工厂
34         connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);
35         try {
36             //通过连接工厂获取连接
37             connection = connectionFactory.createConnection();
38             //启动连接
39             connection.start();
40             //创建session
41             session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
42             //创建一个连接HelloWord的消息队列
43             destination =session.createQueue("HelloWord");
44             //创建消息的消费者
45             messageConsumer = session.createConsumer(destination);
46              
47             while(true){
48                 TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
49                 if(textMessage != null){
50                     System.out.println("收到的消息:" + textMessage.getText());
51                 }else{
52                     break;
53                 }
54             }
55              
56         catch (JMSException e) {
57             // TODO Auto-generated catch block
58             e.printStackTrace();
59         }
60          
61          
62     }
63  
64 }

这个时候再去activemq的服务器查看,会发现刚才生成的消息,未读0条,已读10条。

 

 

这样入门demo 就做完了啦,其实这些网上都有例子。我只是想把它记录下来,以后就不用总是百度了。看看自己的博客就好了。这样也挺方便的。如果能帮上路人的忙,我就更开心啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值