Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot使用ActiveMq同时支持点对点推送和发布订阅

SpringBoot使用ActiveMq同时支持点对点推送和发布订阅

作者头像
憧憬博客
发布于 2020-07-21 07:08:38
发布于 2020-07-21 07:08:38
1.3K00
代码可运行
举报
文章被收录于专栏:憧憬博客分享憧憬博客分享
运行总次数:0
代码可运行

SpringBoot中使用ActiveMq默认是只能点对点推送, ActiveMq还有一种方式就是发布订阅, 一个发布者, 多个订阅者, 形成一个点对面

先来配置一下点对面的。

  • application.properties 增加配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#default point to point 开启发布订阅
spring.jms.pub-sub-domain=true
  • xxApplication.java
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 将对象交给spring来管理
@Bean
    public Topic topic(){
        return new ActiveMQTopic("common.topic");
    }
  • inteface ProducerService.java 增加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 发布消息
 * @param message
 */
public void publish(final String message);
  • ProducerServiceImpl.java 增加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Autowired
private Topic topic;

@Override
public void publish(String message) {
    jmsMessagingTemplate.convertAndSend(topic, message);
}
  • 订阅者 CommonTopicSub.java
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.demo.jms;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class CommonTopicSub {

    @JmsListener(destination = "common.topic")
    public void receiveTopic1(String text) {
        System.out.println("common.topic1 接受到的消息 ====" + text);
    }

    @JmsListener(destination = "common.topic")
    public void receiveTopic2(String text) {
        System.out.println("common.topic2 接受到的消息 ====" + text);
    }
}
  • controller
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@GetMapping("publish")
public Object publish(String msg) {
    producerService.publish(msg);
    return JsonUtils.buildSuccess("ok");
}
  • 效果

这样就完成了我们的发布订阅, 但是测试的时候发现 点对点推送不好用, 消息开始堆积, 我们需要让它同时支持两种

默认消费者并不会消费订阅发布类型的消息,这是由于springboot默认采用的是p2p模式进行消息的监听

在配置文件里面,注释掉 #spring.jms.pub-sub-domain=true

  • 修改 CommonTopicSub.java
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @ JmsListener如果不指定独立的containerFactory的话是只能消费queue消息 是订阅不到消息的
 * @param text
 */
@JmsListener(destination = "common.topic", containerFactory="jmsListenerContainerTopic")
public void receiveTopic1(String text) {
    System.out.println("common.topic1 接受到的消息 ====" + text);
}
  • xxApplication.java 增加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerTopic() {
    DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
    bean.setPubSubDomain(true);
    bean.setConnectionFactory(connectionFactory()); // 创建连接的方法 如果不知道看上篇快速入门文章
    return bean;
}
  • 最终效果
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ActiveMQ 客户端的开发
上篇文章 ActiveMQ 服务器的部署 实现了 ActiveMQ 服务器的部署,本文分别以官方 API、Spring、SpringBoot 三种方式,实现 ActiveMQ 消息的生成者和消费者。
IT技术小咖
2019/06/26
9010
SpringBoot整合 ActiveMQ快速入门 实现点对点推送
ActiveMQ是一个高性能的消息服务, 它已经实现JMS接口(Java消息服务(Java Message Service),Java平台中关于面向消息中间件的接口), 所以我们可以直接在 Java 中使用
憧憬博客
2020/07/21
1.5K0
022. ActiveMQ 入门
1. ActiveMQ 是什么? ---- ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。 ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现,尽管 JMS 规范出台已经是很久的事情了,但是 JMS 在当今的 J2EE 应用中仍然扮演着特殊的地位。 2. JMS 规范 ---- 概述 Java 消息服务(Java Message Service,即 JMS)应用程序接口是一个 Java 平台中关于面向消息中间
山海散人
2021/03/03
5690
022. ActiveMQ 入门
五分钟入门消息中间件
众所周知,消息中间件是大型分布式系统中不可或缺的重要组件。它使用简单,却解决了不少难题,比如异步处理,系统耦合,流量削锋,分布式事务管理等。实现了一个高性能,高可用,高扩展的系统。本章通过介绍消息中间件的应用场景,消息中间件的传输模式,ActiveMQ快速入门 三个方面来对消息中间件进行入门介绍。还在等什么,赶快来学习吧!
Bug开发工程师
2018/07/23
1.7K0
五分钟入门消息中间件
SpringBoot JMS(ActiveMQ) 使用实践
ActiveMQ 1. 下载windows办的activeMQ后,在以下目录可以启动: 2. 启动后会有以下提示 3. 所以我们可以通过http://localhost:8161访问管理页面,通过tc
yawn
2018/03/14
1.6K1
SpringBoot JMS(ActiveMQ) 使用实践
ActiveMQ
场景说明:用户注册,需要执行三个业务逻辑,分别为写入用户表,发注册邮件以及注册短信。
JokerDJ
2023/11/27
4940
ActiveMQ
Spring Boot中集成ActiveMQ(九)
大家好,我是默语,一个专注于技术分享的博主。今天我们来聊聊 Spring Boot中集成ActiveMQ 的话题。在现代微服务架构中,消息队列(Message Queue,MQ)是一种非常重要的组件,用于实现服务间的异步通信、解耦和负载均衡。ActiveMQ是一个流行的开源消息队列实现,支持JMS(Java Message Service)规范。本文将详细介绍JMS和ActiveMQ的基础知识,如何在Spring Boot项目中集成ActiveMQ,包括依赖导入、配置、消息发送和消费的实现。通过这篇文章,您将全面掌握Spring Boot中使用ActiveMQ的技能,为您的项目添加强大的消息处理能力。让我们开始吧!🚀
默 语
2024/11/20
2650
Springboot基于JMS整合ActiveMQ实现对queue和topic的操作
在默认的代码中,springboot只能支持一种方式来与activeMQ进行交互,通过如下参数进行切换:
冬天里的懒猫
2021/11/01
1.1K0
SpringBoot整合ActiveMQ
此处 spring.activemq.pool.enabled=false,表示关闭连接池。
崔笑颜
2020/06/08
4110
深入了解ActiveMQ!
某一天,系统B的负责人告诉系统A的负责人,现在系统B的SystemBNeed2do(String userId)这个接口不再使用了,让系统A别去调它了。 于是,系统A的负责人说"好的,那我就不调用你了。",于是就把调用系统B接口的代码给删掉了。代码变成这样了:
JAVA日知录
2020/09/08
1.1K0
深入了解ActiveMQ!
Spring认证指南-了解如何使用 JMS 代理发布和订阅消息
您将构建一个应用程序,该应用程序使用 SpringJmsTemplate发布单个消息并@JmsListener使用托管 bean 的注释方法订阅它。
IT胶囊
2022/03/01
1.1K0
Spring认证指南-了解如何使用 JMS 代理发布和订阅消息
ActiveMQ入门
Apache ActiveMQ是当前最流行的开源的,支持多协议的,基于Java的消息中间件,官网的原话是:Apache ActiveMQ™ is the most popular open source, multi-protocol, Java-based messaging server.
CodingDiray
2020/04/24
1K1
ActiveMQ入门
ActiveMQ基础学习简单记录
JMS即Java Message Service,是JavaEE的消息服务接口。JMS主要有两个版本:1.1和2.0。2.0和1.1相比,主要是简化了收发消息的代码。
大忽悠爱学习
2023/05/23
1.7K0
ActiveMQ基础学习简单记录
spring整合中间件(RocketMQ、kafka、RabbitMQ、ActiveMQ、ZeroMQ)ActiveMQ
上文:spring整合中间件(RocketMQ、kafka、RabbitMQ)-RabbitMQ
逍遥壮士
2021/04/29
1.2K0
spring整合中间件(RocketMQ、kafka、RabbitMQ、ActiveMQ、ZeroMQ)ActiveMQ
JMS学习之路(一):整合activeMQ到SpringMVC
JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。对于消息的传递有两种类型,一种是点对点的,即一个生产者和一个消费者一一对应;另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。
肖哥哥
2019/02/22
1.6K1
JMS学习之路(一):整合activeMQ到SpringMVC
ActiveMQ的安装与使用。
4、ActiveMQ的安装。官方网址:http://activemq.apache.org/
别先生
2019/09/29
1.8K0
ActiveMQ的安装与使用。
消息中间之ActiveMQ
JMS(JAVA Message Service,java消息服务)是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
HUC思梦
2020/09/03
2.1K0
消息中间之ActiveMQ
消息队列中间件(二)使用 ActiveMQ
Active MQ 是由 Apache 出品的一款流行的功能强大的开源消息中间件,它速度快,支持跨语言的客户端,具有易于使用的企业集成模式和许多的高级功能,同时完全支持 JSM1.1 和 J2EE1.4 。
未读代码
2019/11/04
1.8K0
消息队列中间件(二)使用 ActiveMQ
SpringBoot消息源码:JmsListener注解解析
JMS 消息分发送消息和接收消息两种功能,发送消息很简单,注入 Jms Template 到对应的Bean 中即可使用。接收消息则需要使用@JmsListener 注解。
愿天堂没有BUG
2022/10/28
1.9K0
SpringBoot消息源码:JmsListener注解解析
Spring Boot整合ActiveMQ
在本地或者虚拟机中安装ActiveMQ并启动ActiveMQ服务,启动完毕之后通过浏览器来访问ActiveMQ的管理页面http://localhost:8161(这是本地安装的ActiveMQ,如果是在虚拟机中,localhost需要替换成虚拟机的IP)来确认一下服务是否正常启动,页面正常显示说明启动成功。 为了让你的Spring Boot应用支持ActiveMQ,需要在pom.xml文件中添加如下依赖:
itlemon
2020/04/03
1.5K0
Spring Boot整合ActiveMQ
相关推荐
ActiveMQ 客户端的开发
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验