ActiveMQ之发布、订阅使用

ActiveMQ-架构设计 核心被简单地设计为一组普通的旧 Java 对象 (POJO) 阅读详情

ActiveMQ之发布、订阅使用

maven依赖

     <dependencies>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-core</artifactId>
			<version>5.7.0</version>
		</dependency>
</dependencies>
package com.toov5.subscribe;

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;


public class producerTest {
    // mq通讯地址
    private static String url = "tcp://192.168.91.6:61616";
    // 消息名称
    private static String topicName = "toov5_topic";

    public static void main(String[] args) throws JMSException {
        // 先创建连接工厂 密码默认采用admin admin
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
        // 创建连接
        Connection connection = activeMQConnectionFactory.createConnection();
        // 启动连接
        connection.start();
        // 创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 是否需要事务方式提交 消费方式默认自动签收
        
        
        // 拿到session 创建目标 创建主题
        Topic topic =session.createTopic(topicName);

        // 创建生产者
        MessageProducer producer = session.createProducer(topic); // 生产者生产的消息 是放在这个queue里面的
        for (int i = 1; i < 10; i++) {
            // 拿到队列 创建消息
            TextMessage textMessage = session.createTextMessage("消息内容" + i);
            // 发送消息
            producer.send(textMessage);
        }
        // 关闭连接
        connection.close();
        System.out.println("消息发送完毕");
    }

}

 

结果:

 

发布订阅模式!先启动订阅 在启动发布!!!!!!

 

package com.toov5.subscribe;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;


public class consumerTest {
    // mq通讯地址
    private static String url = "tcp://192.168.91.6:61616";
    // 消息名称
    private static String topicName = "toov5_topic";
    public static void main(String[] args) throws JMSException {
        // 先创建连接工厂 密码默认采用admin admin
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
        // 创建连接
        Connection connection = activeMQConnectionFactory.createConnection();
        // 启动连接
        connection.start();
        // 创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 是否需要事务方式提交 消费方式默认自动签收
        // 拿到session 创建目标 创建主题
        Topic topic =session.createTopic(topicName);

        
         
        //创建消费者
        MessageConsumer consumer = session.createConsumer(topic);
        //启动监听 监听消息
        consumer.setMessageListener(new MessageListener() {
            
            public void onMessage(Message message) {
                //强制转换
                TextMessage textMessage = (TextMessage) message;
                try {
                    System.out.println("consumer 消费 producer:"+textMessage.getText());
                } catch (JMSException e) {
                    
                    e.printStackTrace();
                }
            }
        });
         //监听时候 不要关闭连接 关闭就不监听了 一只处于监听状态 (长连接)
         
    }

}

结果:

 

如果启动一个生产者 两个消费者 那么消费者消费都到的是一样的!

 

ActiveMQ Topic发布和订阅实战代码详解 ActiveMQ是一个开源的消息代理中间件,它是Apache软件基金会的一部分,广泛应用于企业消息传递。消息代理可以看作是一个中介或者“邮局”,它允许分布式系统中的不同组件之间进行异步通信。ActiveMQ支持多种语言和协议,能够集成Java应用以及其它语言编写的程序,提供可靠的消息传递。在消息传递领域,通信模型主要分为两大类:点对点(Point-to-Point, P2P)模型和发布/订阅(Publish/Subscribe, Pub/Sub)模型。 阅读详情

相关推荐

C# Log4Net不输出日志的解决方法

log4net是一个流行的 .NET 日志框架,用于记录应用程序的日志信息。如果你在使用log4net。

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 1263

ActiveMQ的作用总结(应用场景及优势)

业务场景说明:消息队列在大型电子商务类网站,如京东、淘宝、去哪儿等网站有着深入的应用,队列的主要作用是消除高并发访问高峰,加快网站的响应速度。在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧。在使用队列后,用户的请求发给队列后立即返回,(例如: 当然不能直接给用户提示订单提交成功,京东上提示:您“您提交了订单,请等待系统...

qinweili751的博客 4万+

台达PLC DIAdesigner-AX 编程实战:从安装到通信配置

本文详细介绍了台达PLC DIAdesigner-AX编程的实战操作,从软件安装、项目创建到通信配置的全流程。重点讲解了TCP/IP通信设置、库文件管理及常见错误处理,帮助工程师快速掌握台达PLC编程技巧,提升工业自动化项目的开发效率。

weixin_29215391的博客 530

三、JMS发布/订阅模型--ActiveMQ简单应用

一、开发环境 二、java项目 三、具体实现 1、编写发布者 2、编写订阅者 3、关于持久订阅模式 四、运行 1、启动ActiveMQ 2、运行程序 上一篇文章 《二、JMS 点对点模型 – ActiveMQ简单实现》 我们实现了JMS点对点模型的实例,本章对第二种 发布/订阅 模型来做一个简单的实例。 其实发布/订阅 模型与点对点模型的实现方式基本一致...

HJWZYY 715

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5230

一份针对零基础学习AI Agent详细学习计划

以下是针对零基础学习者制定的AI Agent详细学习计划,结合最新行业动态和实用资源推荐,帮助你从入门到进阶系统掌握核心技能

sexy19910923的博客 1904

ActiveMQ--作用总结(应用场景及优势)

ActiveMQ的作用总结(应用场景及优势) 业务场景说明: 消息队列在大型电子商务类网站,如京东、淘宝、去哪儿等网站有着深入的应用, 队列的主要作用是消除高并发访问高峰,加快网站的响应速度。 在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧。 在使用队列后,用户的请求发给队列后立即返回, (例如:...

聆听。。花开雨落的博客 877

版电力系统故障录波_故障录波识图与典型故障波形分析

1、设置故障录波的目的故障录波装置是对电力系统运行状况进行监控的一种自动化设备。系统正常运行时,录波装置不启动录波,当系统发生故障时,通过启动录波装置迅速启动录波器录波,直接记录反应故障装置安装处系统故障的电气量。2、故障录波的作用(1)正确评价继电保护和自动装置的工作。(2)正确分析事故的原因并研究防止对侧。(3)发现继电保护和自动装置缺陷。(4)发现一次设备缺陷,及时消除隐患。(5)帮助寻找故...

weixin_42495661的博客 1万+

springboot 整合activemq 消息发布和订阅

1.maven依赖 <!--activemq的依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq&lt...

梦醒了该散了的博客 7549

南京理工大学计算机预推免面试(双非重点关注)

南京理工大学总体来说对双非学校比较友好,上岸率比较高,而且面试形式是线上,在预推免的过程中,可以作为重点关注的学校,但是一定要注意南理报名截止的时间,部分学校可能保研名额公示的比较晚,对于保研边缘人来说很可能会错过,我的建议是,即使不确定能否拿到保研名额,先查一下截止时间,先在系统上报名!!一旦拿到了offer,就是铁的,保底专硕,而且有很大的技巧性,一定要认真看哈!!!每个人的情况可能都不一样,如果有需要帮忙可以私我~~~

D1379951481的博客 2018

2026华为OD机试(JavaScript)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,JavaScript实现。

MISAYAONE的博客 8万+

ActiveMQ之发布- 订阅消息模式实现

本文介绍了发布者/订阅者消息模型的概念及基于ActiveMQ的实现案例。该模型中,发布者和订阅者通过消息主题匿名通信,支持多消费者接收消息,存在时间依赖性要求订阅者保持活动状态或建立持久订阅。代码示例展示了Java环境下使用ActiveMQ实现该模式的完整流程:1)消息生产者创建连接并发布消息到指定主题;2)两个消息消费者通过监听器异步接收消息。测试时需先启动订阅者注册监听,后启动发布者发送消息,管理界面可查看订阅状态。这种模式适用于解耦的分布式系统通信场景。(149字)

ywl470812087的博客 12万+

yolov8x-p2 实现 tensorrt 推理

yolov8x-p2, tensorrt 实现.

J。 2273

ActiveMQ —— Java 连接 ActiveMQ(发布订阅 Topic)

文章目录发布订阅消息传递域中,目的地被称为主题(topic)生产端代码消费端代码启动 ActiveMQ运行程序两种模式的区别两大模式比较 发布订阅消息传递域中,目的地被称为主题(topic) 发布 / 订阅消息传递域的特点如下: (1)生产者将消息发布到 topic 中,每个消息可以有多个消费者,属于 1:N 关系 (2)生产者和消费者之间有时间上的相关性,订阅某一个主题的消费者只能消费 自它订...

Woo_home的博客 7414

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ActiveMQ发布订阅模式

Topic主题发布和订阅消息 前面讲的案例都是点对点的消息,即一个生产者发送的一条消息只能被一个消费者消费,然后就移除了。 而topic模式一条消息可以被多个消费者订阅,关系如下: 定义生产者 package com.dpb.topic; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax...

波波烤鸭的博客 2446

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SpringBoot整合ActiveMQ:实现发布-订阅

ActiveMQ 发布-订阅 基础 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <d...

缘来阁 498

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ActiveMQ发布/订阅模式实例

1. 发送端 package com.ainy.demo; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import javax.j...

LI_AINY的博客 764

ActiveMQ发布-订阅消息模式

ActiveMQ发布-订阅消息模式一、订阅杂志二、 发布-订阅消息模式 一、订阅杂志 我们很多人都订过杂志,其过程很简单。只要告诉邮局我们所要订的杂志名、投递的地址,付了钱就OK。出版社定期会将出版的杂志交给邮局,邮局会根据订阅的列表,将杂志送达消费者手中。这样我们就可以看到每一期精彩的杂志了。 仔细思考一下订杂志的过程,我们会发现这样几个特点: 1、消费者订杂志不需要直接找出版社; 2、出版社只需要把杂志交给邮局; 3、邮局将杂志送达消费者。 邮局在整个过程中扮演了非常重要的中转作用,在出版社和消费者相

Ufridy的博客 1582

ActiveMQ发布订阅Topic模式

点对点消息传输 即一个生产者发送的一条消息只能被一个消费者消费,然后就移除了。 采用队列Queue,一个生产者对一个消费者。 发布订阅模式 发布订阅模式一条消息可以被多个消费者订阅。 采用Topic模式,可以一个或者多个生产者发布一条消息被多个消费者订阅。 生产者 public class MQTopicPublisher { public static void main(String[...

qq_37432174的博客 647

ActiveMQ的发布订阅模式

1、ActivaMQ的发布订阅模式的简介       发布订阅模式有点类似于我们日常生活中订阅报纸。每年到年尾的时候,邮局就会发一本报纸集合让我们来选择订阅哪一个。在这个表里头列了所有出版发行的报纸,那么对于我们每一个订阅者来说,我们可以选择一份或者多份报纸。比如北京日报、潇湘晨报等。那么这些个我们订阅的报纸,就相当于发布订阅模式里的topic。有很多个人订阅报纸,也有人可能和我订阅了相同的报纸

Learning 9039

java订阅发布模型_ActiveMQ的发布者/订阅者模型示例

ActiveMQ的发布者/订阅者模型入门示例(1)下载安装activemq,启动activeMQ。(2)创建maven项目,java项目或者web项目都可以。目录结构如下:(queue包下的是activemq队列模型的入门示例,需要的可以参考 http://www.cnblogs.com/DFX339/p/9050950.html)需要编写的文件:MQProducer.java Listen...

weixin_30336949的博客 245

ActiveMQ发布/订阅代码实现

1.导入依赖 <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.16.2</version> </dependency> 2.消费者代码 package com.example.queueprj.consumer; import

baidu_41208204的博客 648

ActiveMQ入门系列三:发布/订阅模式

ActiveMQ入门系列三:发布/订阅模式 在上一篇《ActiveMQ入门系列二:入门代码实例(点对点模式)》中提到了ActiveMQ中的两种模式:点对点模式(PTP)和发布/订阅模式(Pub & Sub),详细介绍了点对点模式并用代码实例进行说明,今天就介绍下发布/订阅模式。 一、理论基础 发布/订阅模式的工作示意图: 消息生产者将消息(发布)到topic中,可以同时有多个消...

JAVA开发老菜鸟的专栏 1961

消息队列-ActiveMQ 发布-订阅模式

说明 前面介绍过ActiveMQ的p2p(点对点)模式,p2p模式只允许一条消息给一个消费者使用,能够保证消息不被重复消费(开启事务时需要特殊处理才能保证)。今天我再介绍一种发布订阅模式,即一条消息能够同时让多个消费者同时消费,只要消费者订阅了topic消息,那么只要有消息发送过来,所有订阅了topic的消费者能同时接收到,但是这个需要保证消费者实时在线。 依赖 <dependen...

秋楓的博客 664
上一篇: ActiveMQ之点对点使用
下一篇: JMS消息可靠机制
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值