浅谈Spring Boot 整合ActiveMQ的过程
作者:虾游于海 发布时间:2022-03-22 05:20:27
标签:Spring,Boot,ActiveMQ
RabbitMQ是比较常用的AMQP实现,这篇文章是一个简单的Spring boot整合RabbitMQ的教程。
安装ActiveMQ服务器,(也可以不安装,如果不安装,会使用内存mq)
构建Spring boot项目,增加依赖项,只需要添加这一项即可
<!-- 添加acitivemq依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
增加Application类
@SpringBootApplication
@EnableScheduling //使用定时任务发送消息
public class MqTestApplication {
public static void main(String[] args) {
SpringApplication.run(MqTestApplication.class, args);
}
}
配置application.yml
spring:
activemq:
broker-url: tcp://127.0.01:61616
packages:
trust-all: true
构建一个数据Model,可以发送和消费的数据类型有: String, byte array, Map<String,?>, Serializable object.
// 如果发送的消息是一个对象,必须implements Serializable接口
public class TModel implements Serializable {
private static final long serialVersionUID = -921008687184331557L;
private int count;
public TModel(int count) {
this.count = count;
}
@Override
public String toString() {
return "TModel [count=" + count + "]";
}
}
构建Producer
@Component
public class Producer {
// 在Producer中注入JmsTemplate,我们可以通过这个template发送消息
private final JmsTemplate jmsTemplate;
private int count = 0;
@Autowired
public Producer(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
// 这里使用Spring Boot的定时任务发送消息
@Scheduled(fixedRate = 1000)
public void create() {
// 使用convertAndSend发送消息
jmsTemplate.convertAndSend("queue1", new TModel(count++));
}
}
构建Consumer
@Component
public class Consumer {
@JmsListener(destination = "queue1")
public void comsume(TModel content) {
System.out.println("recive message from queue1 [" + content + "]");
}
}
特别备注:如果我们的生产者和消费者在不同的Module中时,最好将要消费的数据抽象成公共Module.程序是通过Serializable来序列化和反序列化对象的。必须保证生产者和消费者的对象模型的serialVersionUID是一致的。
项目地址: https://github.com/ldwqh0/active-mq-spring.git
示例:配置rabbitmq ,增加一个队列
@Configuration
public class Aqueue {
@Bean
public Queue queue() {
return new Queue("good");
}
}
定义一个生产者.
当启用activemq之后,会自动创建一个AmqpTemplate ,可以被注入到任何需要的地方,我们可以通过这个AmqpTemplate发送消息到MQ中
/**
* 定义一个生产者
* @author LiDong
*/
@RestController
@RequestMapping("/test")
public class SendController {
@Autowired
private AmqpTemplate template;
@GetMapping
public String testSend() {
// 使用AmqpTemplate发送消息
template.convertAndSend("good", "good");
return "success";
}
}
定义消费者,通过指定RabbitListener(queues='good')指定消费的队列
@Component
public class Consumer {
/**
* 定义一个消费者
* @param message
*/
@RabbitListener(queues = "good")
public void handler(String message) {
System.out.println("recive message from " + message);
}
}
启动测试,在浏览器中输入 http://localhost:8080/test 即可发送一条消息到队列中。 该对列可以被消费者处理
来源:https://www.jianshu.com/p/b95dcc43a8a6


猜你喜欢
- 初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法:public native int hash
- 本文实例为大家分享了java多线程之铁路售票系统的具体代码,供大家参考,具体内容如下问题:铁路售票,一共100张,通过四个窗口卖完。要求:分
- 成为一个优秀的Java程序员,有着良好的代码编写习惯是必不可少的。下面就让我们来看看代码编写的30条建议吧。(1) 类名首字母应该大写。字段
- 本文实例为大家分享了flutter Container容器实现圆角边框的具体代码,供大家参考,具体内容如下在这里使用 Container 容
- 1、效果2、简介本文主角是ItemTouchHelper。它是RecyclerView对于item交互处理的一个「辅助类」,主要用于拖拽以及
- Android中ListView下拉刷新实现效果图:ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理
- 最近在做图片相关的应用,所以就各方积累到一些常用的操作,一般来说会有多种方式来实现这一功能,比如 1.采用色度变换 2.
- 在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>、DataTa
- 本文实例讲述了Android使用WebView播放flash及判断是否安装flash插件的方法。分享给大家供大家参考。具体实现方法如下:一、
- 前言在我们java开发中,Date日期这个字段会被经常使用,比如获取当前系统的时间,获取上个月,上一年的时间,以及获取两个日期相差的时分秒数
- 消息的可靠投递在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用
- 什么是树?简单认识树 在生活中,有杨树,石榴树,枣树,而在计算机中的树呢,是一种非线性结构,是由 n(n>=0) 个有限节点
- 前言两个数据结构:顺序表和链表数据结构是一门学科,和语言无关。数据 + 结构:一种描述和组织数据的方式。1. 顺序表顺序表是用一段物理地址连
- 绑定(Binding)元素介绍首先,盗用张图。这图形象的说明了Binding的机理。此处主要介绍的绑定类是System.Windows.Da
- 在多线程处理问题时,无法通过@Autowired注入bean,报空指针异常,在线程中为了线程安全,是防注入的,如果要用到这个类,只能从bea
- 在装2个不同版本JDK时遇到了这个问题,在网上钩了一吧!查到一个讲解比较好的资料。一:要解决的问题我们在尝鲜 JDK1.5 的时候,相信不少
- 1.使用的是maven项目,添加依赖<!-- mybatis-plus begin --> <depend
- 文件的上传与下载(一)在实现文件上传和下载之前我们需要做一些准备工作,在Apache官网去下载文件上传下载的两个组件,下载链接这里给出:co
- 本文实例为大家分享了Android实现倒计时效果的具体代码,供大家参考,具体内容如下一个倒计时的效果先看效果图:直接上代码:这里是关于倒计时
- 一、简介Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供