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);
}