浅谈Spring Boot 整合ActiveMQ的过程
程序员文章站
2023-12-18 10:08:58
rabbitmq是比较常用的amqp实现,这篇文章是一个简单的spring boot整合rabbitmq的教程。
安装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是一致的。
项目地址:
示例:配置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 即可发送一条消息到队列中。 该对列可以被消费者处理
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
浅谈Spring Boot 整合ActiveMQ的过程
-
浅谈spring-boot-rabbitmq动态管理的方法
-
Spring整合redis(jedis)实现Session共享的过程
-
Spring Boot整合ElasticSearch实现多版本兼容的方法详解
-
spring boot整合CAS Client实现单点登陆验证的示例
-
spring boot整合quartz实现多个定时任务的方法
-
spring-boot整合ehcache实现缓存机制的方法
-
Spring Boot+Mybatis的整合过程
-
Spring Boot + Kotlin整合MyBatis的方法教程
-
spring boot整合Shiro实现单点登录的示例代码