gpt4 book ai didi

浅谈Spring Boot 整合ActiveMQ的过程

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅谈Spring Boot 整合ActiveMQ的过程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

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

?
1
2
3
4
5
<!-- 添加acitivemq依赖 -->
< dependency >
   < groupId >org.springframework.boot</ groupId >
   < artifactId >spring-boot-starter-activemq</ artifactId >
</ dependency >

增加Application类 。

?
1
2
3
4
5
6
7
@SpringBootApplication
@EnableScheduling //使用定时任务发送消息
public class MqTestApplication {
   public static void main(String[] args) {
     SpringApplication.run(MqTestApplication. class , args);
   }
}

配置application.yml 。

?
1
2
3
4
5
spring:
  activemq:
   broker-url: tcp://127.0.01:61616
   packages:
    trust-all: true

构建一个数据Model,可以发送和消费的数据类型有: String, byte array, Map<String,?>, Serializable object. 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 如果发送的消息是一个对象,必须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 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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 。

?
1
2
3
4
5
6
7
@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 ,增加一个队列 。

?
1
2
3
4
5
6
7
8
@Configuration
public class Aqueue {
@Bean
public Queue queue() {
return new Queue( "good" );
}
 
}

定义一个生产者. 。

当启用activemq之后,会自动创建一个AmqpTemplate ,可以被注入到任何需要的地方,我们可以通过这个AmqpTemplate发送消息到MQ中 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* 定义一个生产者
* @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')指定消费的队列 。

?
1
2
3
4
5
6
7
8
9
10
11
@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 。

最后此篇关于浅谈Spring Boot 整合ActiveMQ的过程的文章就讲到这里了,如果你想了解更多关于浅谈Spring Boot 整合ActiveMQ的过程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com