1. 启动依赖
<!-- 添加activeMQ依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2. 使用内置的ActiveMQ
使用内置的ActiveMQ很简单,直接引入jmsMessagingTemplate就可以使用了,无需配置文件
2.1 生产者
package com.bjc.boot.demo;
import javax.annotation.Resource;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/producer")
public class QueueProducer {
@Resource
private JmsMessagingTemplate jmsMessagingTemplate;
@RequestMapping("/send")
public void sendMesg(String text){
jmsMessagingTemplate.convertAndSend("bjc", text);
}
}
直接调用jmsMessagingTemplate的convertAndSend方法即可发送消息了,第一个参数是消息名称,第二个参数是消息内容
2.2 消费者
package com.bjc.boot.demo;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class QueueConsumer {
@JmsListener(destination = "bjc")
public void receive(String text){
System.out.println("接收到的消息是:" + text);
}
}
消费者也很简单,无需我们单独写监听器了,也不需要配置文件了,直接用注解@JmsListener,属性值为消息的名称,定义的接收方法的参数就是消息。
3. 使用外置ActiveMQ
使用外部服务也超级简单,只需要在src/main/resources下的application.properties增加配置, 指定ActiveMQ的地址
例如:
spring.activemq.broker-url=tcp://192.168.25.130:61616
这样配置就好了
3.1 发送Map信息
和发送文本消息方式一样,不同的是,在监听方法的参数上要写Map类型的形参数
3.2 生产者
@RequestMapping("/sendMap")
public void sendMapMesg(){
Map map = new HashMap();
map.put("name", "张三");
map.put("age", 22);
map.put("birth", "2019-01-02");
jmsMessagingTemplate.convertAndSend("bjcMap", map);
}
3.3 消费者
@JmsListener(destination = "bjcMap")
public void receiveMap(Map map){
System.out.println("接收到的消息是:" + map);
}
我们发现使用boot整合activeMQ只需要注意三个地方就可以了
1)生产者发送的消息名称与消费者监听注解的名称要一致
2)消费者的监听方法要加注解@JmsListener
3)消费者监听方法的参数类型与消息类型要一致