默认情况下@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相关推荐

  1. ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Queue

    很多教程中,会介绍原生demo,原生demo在实际开发中不会用到,而且代码量比较大,而且不好理解,也没什么用,所以我们课程不介绍.我们的课程主打实战,所以只会介绍跟SpringBoot整合的方案. 新 ...

  2. activeMQ基础学习和SpringBoot整合activeMQ案例

    昨天仔细研究了activeMQ消息队列,也遇到了些坑,昨天晚上也写了篇文章记录坑的内容,其实上篇文章(SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNO ...

  3. ActiveMQ入门-ActiveMQ环境搭建

    http://activemq.apache.org/从阿帕奇的官方下载,ActiveMQ的环境搭建依赖于JDK,建议使用1.8 解压缩就能用,执行bin文件夹下面的可执行文件 ➜ ~ cd /Use ...

  4. 深入理解ActiveMQ支持的2类消息发送接收模型queue和topic

    本文已经收录进专栏,谢谢支持.

  5. RabbitMQ入门学习系列(三).消息发送接收

    快速阅读 用Rabitmq的队列管理,以及如何保证消息在队列中不丢失.通过ack的消息确认和持久化进行操作.以及Rabbit中如何用Web面板进行管理队列.消费者如何处理耗时的任务 生产者代码创建链接 ...

  6. SpringBoot 整合 发送互亿无线短信验证码

    这里 提供的验证码是:https://user.ihuyi.com/ 互亿无线 产品的 百亿无线 这个短信验证,需要 固定格式的 短信内容.否则,就判定为发送失败 以下 代码需要 Jsoup 支持 自 ...

  7. SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNOWLEDGE)为什么失效啊?

    今天在家隔离办公,不太忙,然后就琢磨起来消息队列activeMQ的消息事务来解决分布式事务,但是奈何在SpringBoot整合activeMQ时,其消费者手动签收消息时出现了问题-->当acti ...

  8. SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.21 SpringBoot 整合 ActiveMQ

    SpringBoot [黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)] SpringBoot 开发实用篇 文章目录 Spring ...

  9. SpringBoot整合JMS

    SpringBoot整合JMS 文章目录 SpringBoot整合JMS 前言 一.JMS.AMQP概念以及区别 二.ActiveMQ安装 三.SpringBoot整合ActiveMQ:队列模式实例 ...

最新文章

  1. 淘宝海量数据库之二:一致性选择
  2. PHP类继承、接口继承关系概述
  3. Firefox 65.0.2 发布,Firefox 66 预计3月19日推出
  4. solr 使用自定义的 QueryParser
  5. Dojo API略解续
  6. 岛屿数量—leetcode200
  7. MongoDB在linux下的启动
  8. 隐藏文件或文件夹属性无法修改解决方案
  9. 04-01 常见接口协议
  10. layui离线文档2.2.5
  11. 43.一维卷积-航空公司评论情感预测
  12. VAE背后的哲学思想及数学原理
  13. 命令行查看文件夹大小
  14. easyui datagrid 可编辑单元格 显示 clear icon 和 放大镜图标
  15. Git develop分支的一些操作
  16. [转载]你们要的GIF动图制作全攻略!看完就会做!(实操教程)
  17. powerdesigner 导入sql文件生成模型
  18. vue刷新当前页面--provide / inject 用法
  19. 编译android平台libyuv库(使用ndk)
  20. Unity2021稳定版+Directory Monitoring

热门文章

  1. PHP面试 PHP基础知识 八(会话控制)
  2. java之 Timer 类的使用以及深入理解
  3. input文本框设置和移除默认值
  4. ubuntu_常用命令_01
  5. linux中socket的理解---4
  6. Two-stage rotation animation is deprecated. This application should use the smoother single-stage an
  7. zigbee cc2530 adc转换
  8. 稳坐视频云行业第一,阿里云将用边缘计算开辟新赛道
  9. MySQL 配置文档
  10. sharepoint 2016 开启Project 2016 pwa网站