springBoot集成AcitiveMq的时候,由于springBoot的版本不同,所有会出现不同的问题。
当我们在启动连接池的时候有的时候会出现:启动项目会报错,提示JmsMessagingTemplate无法注入、
这个时候,你可以参考:https://blog.csdn.net/eumenides_/article/details/91850332
可能是你引入jar包的问题。
我们以springBoot2.2为例
第一步:引入jar包。
compile('org.springframework.boot:spring-boot-starter-activemq')
compile group: 'org.messaginghub', name: 'pooled-jms', version: '1.1.0'
在这个地方一定要切记:
不能再引入springBoot的时候,把geronimo的包去除了。因为ActiveMq需要这个包。下面的要注解掉。
config.exclude group: "org.apache.geronimo.specs"
config.exclude group: "com.google.code.findbugs"
第二步:在代码中引用mq
在启动类里添加:
@EnableJms
所以接下来,在需要的controller层,引入redis
/**
* 该类继承JmsTemplate,封装好了许多方法,更加便捷
*/
@Autowired
private JmsMessagingTemplate jmsTemplate;
/**
将信息添加到MQ里。
*/
@ApiOperation(value = "生成MessageQueue",notes = "生成MessageQueue",httpMethod = "GET")
@RequestMapping(value = "/test",method = RequestMethod.GET)
public String test(){
Map msgMap = new HashMap();
msgMap.put("phone", "123");
msgMap.put("code","122");
//创建mq队列
Destination destination = new ActiveMQQueue("zhm");
//发送消息
jmsTemplate.convertAndSend(destination, JsonUtil.toJson(msgMap));
return "Welcome to reactive world ~";
}
/**
* 收到MQ,并且对其进行处理
* @param msg
*/
@JmsListener(destination = "zhm")
public void consumptionCheckGoodsInfo1(String msg) {
System.out.println("msg====>"+msg);
}