微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

浅谈Spring Boot 整合ActiveMQ的过程

本篇文章主要介绍了浅谈Spring Boot 整合ActiveMQ的过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

RabbitMQ是比较常用的AMQP实现,这篇文章一个简单的Spring boot整合RabbitMQ的教程。

安装ActiveMQ服务器,(也可以不安装,如果不安装,会使用内存mq)

构建Spring boot项目,增加依赖项,只需要添加这一项即可

org.springframework.bootspring-boot-starter-activemq

增加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, 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 即可发送一条消息到队列中。 该对列可以被消费者处理

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐