网易首页 > 网易号 > 正文 申请入驻

activemq视频讲解之使用说明

0
分享至


一、什么是消息中间件

消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送

二、什么是ActiveMQ

ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。

三、什么时候需要用ActiveMQ

ActiveMQ常被应用与系统业务的解耦,异步消息的推送,增加系统并发量,提高用户体验。例如以我在工作中的使用,在比较耗时且异步的远程开锁操作时

四、如何使用ActiveMQ

1.AcitveMQ的数据传送流程

2.ActiveMQ的两种消息传递类型

(1)点对点传输,即一个生产者对应一个消费者,生产者向broke推送数据,数据存储在broke的一个队列中,当消费者接受该条队列里的数据。

(2)基于发布/订阅模式的传输,即根据订阅话题来接收相应数据,一个生产者可向多个消费者推送数据,与MQTT协议的实现是类似的,对MQTT协议有兴趣的可跳转到https://www.cnb·ogs.com/xiguadadage/p/11216463.htm·

两种消息传递类型的不同,点对点传输消费者可以接收到在连接之前生产者所推送的数据,而基于发布/订阅模式的传输方式消费者只能接收到连接之后生产者推送的数据。

3.ActiveMQ的安装与启动

(1)官网下载对应服务器版本

(2)解压后进入apache-activemq-5.15.9/bin目录

(3)执行./activemq start启动ActiveMQ

(4)浏览器输入ActiveMQ启动的服务器ip:8161便可进入web界面,点击Manage ActiveMQ broker可以查看消息推送的状态,默认账号密码为admin,admin

(5)启动错误分析

进入/root/apache-activemq-5.15.9/data目录查看activemq.·og文件,根据错误提示信息修改,例如端口号被占用等。

4.ActiveMQ的代码测试

(1)构建maven项目,引入依赖

org.apache.activemq activemq-all 5.9.0

(2)生产者类

* @Description 生产者 * @Date 2019/7/20 * @Created by yqh */public class MyProducer { private static final String ACTIVEMQ_URL = "tcp://192.168.168.242:61616"; public static void main(String[] args) throws JMSException { // 创建连接工厂 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); // 创建连接 Connection connection = activeMQConnectionFactory.createConnection(); // 打开连接 connection.start(); // 创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建队列目标,并标识队列名称,消费者根据队列名称接收数据 Destination destination = session.createQueue("myQueue"); // 创建一个生产者 MessageProducer producer = session.createProducer(destination); // 向队列推送10个文本消息数据 for (int i = 1 ; i <= 10 ; i++){ // 创建文本消息 TextMessage message = session.createTextMessage("第" + i + "个文本消息"); //发送消息 producer.send(message); //在本地打印消息 System.out.println("已发送的消息:" + message.getText()); } //关闭连接 connection.close(); }}

运行结果:

已发送的消息:第1个文本消息

已发送的消息:第2个文本消息已发送的消息:第3个文本消息已发送的消息:第4个文本消息已发送的消息:第5个文本消息已发送的消息:第6个文本消息已发送的消息:第7个文本消息已发送的消息:第8个文本消息已发送的消息:第9个文本消息已发送的消息:第10个文本消息

测试查看web后台显示,有10条消息在队列中等待消费

图片模糊,建议替换或删除×

(3)消费者类

* @Description 消费者类 * @Date 2019/7/20 0020 * @Created by yqh */public class MyConsumer { private static final String ACTIVEMQ_URL = "tcp://192.168.168.242:61616"; public static void main(String[] args) throws JMSException { // 创建连接工厂 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); // 创建连接 Connection connection = activeMQConnectionFactory.createConnection(); // 打开连接 connection.start(); // 创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建队列目标,并标识队列名称,消费者根据队列名称接收数据 Destination destination = session.createQueue("myQueue"); // 创建消费者 MessageConsumer consumer = session.createConsumer(destination); // 创建消费的监听 consumer.setMessageListener(new MessageListener() { public void onMessage(Message message) { TextMessage textMessage = (TextMessage) message; try { System.out.println("消费的消息:" + textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } }); }}

测试结果:

消费的消息:第1个文本消息

消费的消息:第2个文本消息消费的消息:第3个文本消息消费的消息:第4个文本消息消费的消息:第5个文本消息消费的消息:第6个文本消息消费的消息:第7个文本消息消费的消息:第8个文本消息消费的消息:第9个文本消息消费的消息:第10个文本消息

web后台显示有一个消费者处于连接状态,且已消费了10个message,而该条队列已没有message待消费了

图片模糊,建议替换或删除×

(4)当我们运行两个消费者类,消息又是怎么被消费的呢?是两个消费者都能收到生产者生产的message,还是只有其中一个消费者能消费呢?

我们先运行两个消费者,在运行一个生产者对目标队列生产10个message,会发现有以下情况

// Consumer1控制台

消费的消息:第1个文本消息消费的消息:第3个文本消息消费的消息:第5个文本消息消费的消息:第7个文本消息消费的消息:第9个文本消息

// Consumer2控制台

消费的消息:第2个文本消息消费的消息:第4个文本消息消费的消息:第6个文本消息消费的消息:第8个文本消息消费的消息:第10个文本消息

即队列中的数据会平均的分给每一个消费者消费,且每一条数据只能被消费一次

(5)以上是基于队列点对点的传输类型,以下是基于发布/订阅模式传输的类型测试

* @Description 基于发布/订阅模式传输类型的生产者测试 * @Date 2019/7/20 0020 * @Created by yqh */public class MyProducerForTopic { private static final String ACTIVEMQ_URL = "tcp://192.168.168.242:61616"; public static void main(String[] args) throws JMSException { // 创建连接工厂 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); // 创建连接 Connection connection = activeMQConnectionFactory.createConnection(); // 打开连接 connection.start(); // 创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建队列目标,并标识队列名称,消费者根据队列名称接收数据 Destination destination = session.createTopic("topicTest"); // 创建一个生产者 MessageProducer producer = session.createProducer(destination); // 向队列推送10个文本消息数据 for (int i = 1 ; i <= 10 ; i++){ // 创建文本消息 TextMessage message = session.createTextMessage("第" + i + "个文本消息"); //发送消息 producer.send(message); //在本地打印消息 System.out.println("已发送的消息:" + message.getText()); } //关闭连接 connection.close(); }}

* @Description 基于发布/订阅模式传输类型的消费者测试 * @Date 2019/7/20 0020 * @Created by yqh */public class MyConsumerForTopic { private static final String ACTIVEMQ_URL = "tcp://192.168.168.242:61616"; public static void main(String[] args) throws JMSException { // 创建连接工厂 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); // 创建连接 Connection connection = activeMQConnectionFactory.createConnection(); // 打开连接 connection.start(); // 创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建队列目标,并标识队列名称,消费者根据队列名称接收数据 Destination destination = session.createTopic("topicTest"); // 创建消费者 MessageConsumer consumer = session.createConsumer(destination); // 创建消费的监听 consumer.setMessageListener(new MessageListener() { public void onMessage(Message message) { TextMessage textMessage = (TextMessage) message; try { System.out.println("消费的消息:" + textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } }); }}

现在如果我们先启动生产者,再启动消费者,会发现消费者是无法接收到之前生产者之前所生产的数据,只有消费者先启动,再让生产者消费才可以正常接收数据,这也是发布/订阅的主题模式与点对点的队列模式的一个明显区别。

而如果启动两个消费者,那么每一个消费者都能完整的接收到生产者生产的数据,即每一条数据都被消费了两次,这是发布/订阅的主题模式与点对点的队列模式的另一个明显区别。

以上就是对“activemq视频讲解之使用说明”的介绍,希望对大家有所帮助,还想学习更多关于Java的课程,可以关注动力节点官网Java视频教程,免费下载学习。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中途女子收到朋友消息告知房间里面有摄像头

中途女子收到朋友消息告知房间里面有摄像头

挪威森林
2024-05-30 16:24:43
今年五一意外“出圈”的上海外滩女警:自小便有警察梦,还去当过两年兵

今年五一意外“出圈”的上海外滩女警:自小便有警察梦,还去当过两年兵

澎湃新闻
2024-06-01 07:36:41
严查!人民日报正式发声后,张继科被带走调查,已牵扯出12位明星

严查!人民日报正式发声后,张继科被带走调查,已牵扯出12位明星

红夏天呀
2024-06-01 23:20:39
以色列称:继续加沙战争“直至消灭哈马斯”

以色列称:继续加沙战争“直至消灭哈马斯”

参考消息
2024-06-01 13:54:11
夜查逻辑浮出水面:扣完私人电动车,共享车就试点了,好一步大棋

夜查逻辑浮出水面:扣完私人电动车,共享车就试点了,好一步大棋

大风文字
2024-06-01 18:47:19
大事件!广发银行十多名高管被抓包括三任董事长!释放什么信号?

大事件!广发银行十多名高管被抓包括三任董事长!释放什么信号?

兵哥闲聊
2024-06-01 22:03:53
建议"砍掉当今社会“4大毒瘤”,恢复社会活力",造福14亿国人

建议"砍掉当今社会“4大毒瘤”,恢复社会活力",造福14亿国人

喜欢农家生活的阿律
2024-06-01 15:22:23
笑不活了!六一学校义卖活动结束后,家长:这才是高端捡漏啊!

笑不活了!六一学校义卖活动结束后,家长:这才是高端捡漏啊!

今日搞笑分享
2024-06-01 20:50:54
法媒:中国的态度非常强硬,中国对美国的批评非常严厉

法媒:中国的态度非常强硬,中国对美国的批评非常严厉

杂谈天下式
2024-06-02 00:10:52
穿衣自由但得有度,广西女子牛仔裤一半拖地上,网友:不如不穿

穿衣自由但得有度,广西女子牛仔裤一半拖地上,网友:不如不穿

三叶秋文局
2024-06-01 19:54:59
不要随地“交配”交配人在做,天眼在看!

不要随地“交配”交配人在做,天眼在看!

水泥土的搞笑
2024-06-01 23:00:39
刀刀见血!新华社连发六文痛批形式主义,透露了什么信号?

刀刀见血!新华社连发六文痛批形式主义,透露了什么信号?

兵叔评说
2024-06-01 18:10:47
皇马2年后再夺欧冠冠军!15冠历史最多 11年6冠刷爆11纪录

皇马2年后再夺欧冠冠军!15冠历史最多 11年6冠刷爆11纪录

念洲
2024-06-02 04:49:14
铁头自曝自己人还在日本,有可能回不去了

铁头自曝自己人还在日本,有可能回不去了

映射生活的身影
2024-06-01 21:49:08
世联赛最新排行榜:波巴继续排前二,中国女排第五,土耳其队上升

世联赛最新排行榜:波巴继续排前二,中国女排第五,土耳其队上升

湘楚风云
2024-06-01 22:18:52
拆承重墙剪力墙,还拍视频发抖音宣传?全国政协委员:太离谱了!

拆承重墙剪力墙,还拍视频发抖音宣传?全国政协委员:太离谱了!

可达鸭面面观
2024-06-01 08:30:14
54岁名人“大衣哥”突然去世,出殡画面流出,知情者披露死因真相

54岁名人“大衣哥”突然去世,出殡画面流出,知情者披露死因真相

求实者
2024-06-01 22:32:54
朱婷比蔡斌还有经验!对泰国第三局她叫暂停,央视却夸老蔡有经验

朱婷比蔡斌还有经验!对泰国第三局她叫暂停,央视却夸老蔡有经验

三十年莱斯特城球迷
2024-06-01 21:46:53
大瓜!前经纪人曝张柏芝不堪一幕:像狗一样乞求,钱到手后就翻脸

大瓜!前经纪人曝张柏芝不堪一幕:像狗一样乞求,钱到手后就翻脸

娱乐的小灶
2024-06-01 22:53:32
中国军事科学院原副院长何雷中将:请菲方先回答四个问题!

中国军事科学院原副院长何雷中将:请菲方先回答四个问题!

新京报政事儿
2024-06-01 13:27:50
2024-06-02 06:22:44
动力节点Java培训
动力节点Java培训
动力节点专注Java培训事业
1365文章数 36关注度
往期回顾 全部

科技要闻

余承东:不卷价格!雷军:将双班制生产!

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

体育要闻

女排最强2主攻合体 合砍40分打懵泰国

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

实锤!普华永道,危!

汽车要闻

吉利银河E5 Flyme Auto智能座舱首发

态度原创

亲子
时尚
手机
数码
房产

亲子要闻

爬行垫突然倒下砸向哥哥,倒地瞬间弟弟冲上去了!

伊姐周六热推:电视剧《时光正好》;综艺《快乐老友记 第二季》......

手机要闻

小米澎湃OS再次公布进展通报:相册闪退已解决,部分问题修复中!

数码要闻

消息称 AMD 锐龙 9000 系列 Zen5 桌面处理器将于 7 月上市

房产要闻

重磅!琼海出台楼市新政:住房出租、挂牌计划出售,都可减套数!

无障碍浏览 进入关怀版