ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Topic
默认情况下@JmsListener不能监听topic,需要添加工厂类
package jms;import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;import javax.jms.ConnectionFactory;@Configuration
@EnableJms //启用jms功能
public class ActiveMqConfig {//如果要使用topic类型的消息,则需要配置该bean@Bean("jmsTopicListenerContainerFactory")public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory){DefaultJmsListenerContainerFactory factory= new DefaultJmsListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setPubSubDomain(true); //这里必须设置为true,false则表示是queue类型return factory;}}
public void sendMessageTopic(ActiveMQTopic destination,String message) {jmsTemplate.convertAndSend(destination,"这是一个广播");
}
@JmsListener(destination = "mytest.topic",containerFactory = "jmsTopicListenerContainerFactory")
public void receiveToic(String text){System.out.println(text);
}
@Test
public void sendMessageTopic()throws Exception{ActiveMQTopic destination = new ActiveMQTopic("mytest.topic");producer.sendMessageTopic(destination,"你好,ActiveMQ");
}
刚才出现了一个问题,在topic消费后也返回了一个提示信息,但是报错了
对于点对点消费者来说, 我可以给发送者回一条消息,告诉他我收到消息了,但是对于topic,发送者对接受者是否接受到消息不感兴趣,所以在发送者如果回送消息的时候会报错。
最后一个比较重要的知识点:对于queue来说,我们的消息发送出去,会一直保存在服务器上,等待消费者消费他,如果此时没有消费者在线,会一直等待,会把消息做持久化处理,保存在硬盘上,如果消费者上线,消费者就能监听到这条消息并进行消费。
对于topic来说,我一条消息发送出去,可能会有多个消费者去消费,如果这个时候消费者不在线,默认情况下,等消费者上线,他也无法收到这条消息,相当于这条消息丢失了。
也可以配置topic的持久化,保证消费者不在线的情况下,也能收到这条消息,那这跟queue的机制就类似了。
==特殊情况:如果消息发送失败怎么办?一直失败怎么办?==
==消息的重试机制,死信队列==
ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Topic相关推荐
- ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Queue
很多教程中,会介绍原生demo,原生demo在实际开发中不会用到,而且代码量比较大,而且不好理解,也没什么用,所以我们课程不介绍.我们的课程主打实战,所以只会介绍跟SpringBoot整合的方案. 新 ...
- activeMQ基础学习和SpringBoot整合activeMQ案例
昨天仔细研究了activeMQ消息队列,也遇到了些坑,昨天晚上也写了篇文章记录坑的内容,其实上篇文章(SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNO ...
- ActiveMQ入门-ActiveMQ环境搭建
http://activemq.apache.org/从阿帕奇的官方下载,ActiveMQ的环境搭建依赖于JDK,建议使用1.8 解压缩就能用,执行bin文件夹下面的可执行文件 ➜ ~ cd /Use ...
- 深入理解ActiveMQ支持的2类消息发送接收模型queue和topic
本文已经收录进专栏,谢谢支持.
- RabbitMQ入门学习系列(三).消息发送接收
快速阅读 用Rabitmq的队列管理,以及如何保证消息在队列中不丢失.通过ack的消息确认和持久化进行操作.以及Rabbit中如何用Web面板进行管理队列.消费者如何处理耗时的任务 生产者代码创建链接 ...
- SpringBoot 整合 发送互亿无线短信验证码
这里 提供的验证码是:https://user.ihuyi.com/ 互亿无线 产品的 百亿无线 这个短信验证,需要 固定格式的 短信内容.否则,就判定为发送失败 以下 代码需要 Jsoup 支持 自 ...
- SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNOWLEDGE)为什么失效啊?
今天在家隔离办公,不太忙,然后就琢磨起来消息队列activeMQ的消息事务来解决分布式事务,但是奈何在SpringBoot整合activeMQ时,其消费者手动签收消息时出现了问题-->当acti ...
- SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.21 SpringBoot 整合 ActiveMQ
SpringBoot [黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)] SpringBoot 开发实用篇 文章目录 Spring ...
- SpringBoot整合JMS
SpringBoot整合JMS 文章目录 SpringBoot整合JMS 前言 一.JMS.AMQP概念以及区别 二.ActiveMQ安装 三.SpringBoot整合ActiveMQ:队列模式实例 ...
最新文章
- 淘宝海量数据库之二:一致性选择
- PHP类继承、接口继承关系概述
- Firefox 65.0.2 发布,Firefox 66 预计3月19日推出
- solr 使用自定义的 QueryParser
- Dojo API略解续
- 岛屿数量—leetcode200
- MongoDB在linux下的启动
- 隐藏文件或文件夹属性无法修改解决方案
- 04-01 常见接口协议
- layui离线文档2.2.5
- 43.一维卷积-航空公司评论情感预测
- VAE背后的哲学思想及数学原理
- 命令行查看文件夹大小
- easyui datagrid 可编辑单元格 显示 clear icon 和 放大镜图标
- Git develop分支的一些操作
- [转载]你们要的GIF动图制作全攻略!看完就会做!(实操教程)
- powerdesigner 导入sql文件生成模型
- vue刷新当前页面--provide / inject 用法
- 编译android平台libyuv库(使用ndk)
- Unity2021稳定版+Directory Monitoring
热门文章
- PHP面试 PHP基础知识 八(会话控制)
- java之 Timer 类的使用以及深入理解
- input文本框设置和移除默认值
- ubuntu_常用命令_01
- linux中socket的理解---4
- Two-stage rotation animation is deprecated. This application should use the smoother single-stage an
- zigbee cc2530 adc转换
- 稳坐视频云行业第一,阿里云将用边缘计算开辟新赛道
- MySQL 配置文档
- sharepoint 2016 开启Project 2016 pwa网站