看这篇文章之前,我相信大家已经有过ActiveMQ的基本知识,已经知道JmsTemplete、MessageListenerContainer、Connection、Session、ConnectionFactory等相关知识,在后续的介绍里,还是会简单的进行介绍,以便更好的了解。
项目搭建
和SpringBoot整合之前,我们先导入相关依赖包,如下所示:
<!--activemq依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--测试依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
application.properties相关配置:
#配置ActiveMq
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.password=admin
spring.activemq.user=admin
#队列名称
activemq.first.queue=FIRST_QUEUE
下面我们先实现生产者和消费者:
JmsTemplate是消息处理核心类(线程安全),被用作消息的发送和接受,在发送或者是消费消息的同时也会对所需资源进行创建和释放。消息消费采用receive方式(同步、阻塞的),这里不做具体描述。关于消息的发送,常用的方式为send()以及convertAndSend()两种,其中send()发送需要我们自己指定消息格式,使用convertAndSend可以根据定义好的MessageConvert自动转换消息格式。大家请注意,在自定义JmsTemplate时,一定要指定ConnectionFactory,否则会出错。
生产者,使用JmsTemplate.convertAndSend()实现消息的发送。
@Component
@Slf4j
public class FirstQueueProducer {
@Resource
private JmsTemplate jmsTemplate;
/**
* 用于发送消息到mq服务
* @param destination queue或者topic
* @param message 消息体
*/
public void send(String destination, String message) {
this.jmsTemplate.convertAndSend(destination,message);
log.info("发送消息成功