springboot整合activemq
pom中加入依赖
<!--activemq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
yml中配置
# ===================================================================
# 配置activemq消息队列
# ===================================================================
activemq:
#启动activemq 进入D:\installTmp\apache-activemq-5.16.0\bin目录 执行命令:activemq.bat start
#地址:http://127.0.0.1:8161/ admin/admin
#把连接端口8161改为61616 否则会报错 javax.jms.JMSException: Unknown data type: 47
broker-url: tcp://127.0.0.1:61616
user: 123456
password: 123456
pool:
queueName: publish.queue
topicName: publish.topic
# 使用flase,此处改为true报错,不清楚什么原因
enabled: false
max-connections: 10
生产者: ActiveMQProducer
package com.shp.dev.network.common.util.activemq;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;
/**
* @CreateBy: shp
* @Version: 1.0
* @Description: TODO 生产者producer 用于发送消息
* @CreateTime: 2020/10/31 0:29
* @PackageName: com.shp.dev.network.common.util.activemq
* @ProjectName: network
*/
@Service("producer")
public class ActiveMQProducer {
@Autowired
private JmsMessagingTemplate jmsTemplate;
public void sendMsg(String topic, String message) {
jmsTemplate.convertAndSend(new ActiveMQQueue(topic), message);
}
}
消费者 ActiveMQConsumer
package com.shp.dev.network.common.util.activemq;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
/**
* @CreateBy: shp
* @Version: 1.0
* @Description: TODO 消费者 用于消费消息
* @CreateTime: 2020/10/31 0:30
* @PackageName: com.shp.dev.network.common.util.activemq
* @ProjectName: network
*/
@Component
public class ActiveMQConsumer {
//destination = 监听的主题
//listen(String text) 收到的消息
@JmsListener(destination = "active.queue")
public void listen(String text) {
System.out.println("<<<========= 收到消息开始处理 " + text);
}
}
调用生产者产生消息 ActiveMQController
package com.shp.dev.network.common.util.activemq;
import com.shp.dev.network.common.bean.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @CreateBy: Administrator
* @Version: 1.0
* @Description: TODO
* @CreateTime: 2021/2/18 12:06
* @PackageName: com.shp.dev.network.common.util.activemq
* @ProjectName: network
*/
@RestController
@RequestMapping("/active")
@CrossOrigin
public class ActiveMQController {
@Autowired//注入activemq
private ActiveMQProducer producer;
@RequestMapping(value = "/send", method = {RequestMethod.POST})
@ApiOperation("发送消息到activeMQ")
public ResultBean send(String topic, String message) {
producer.sendMsg(topic,message);
return ResultBean.success();
}
}