Spring Boot 之整合ActiveMQ实现
程序员文章站
2022-04-27 18:48:33
...
对于信息交互,mq是个很好的实现者。相当于订阅者和消费者的模式。一个广播消息发送,我们听众信息接收。或者单对单的模式,一方发送消息,一方接收。用的交广的还是广播模式。今天就记一下ActiveMQ在spring boot中的整合实现。
首先,引进依赖包:
<!-- activemq support -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- /activemq support -->
其次,在配置文件中配置mq的相关信息:
//mq的安装服务器及端口号
spring.activemq.broker-url=tcp://111.11.11.11:61616
spring.activemq.in-memory=true
spring.activemq.password=admin
spring.activemq.user=admin
spring.jms.pub-sub-domain=true
spring.activemq.pool.enabled=false
相关工具类如下:
@Component
public class SpringApplicationContextUtil implements ApplicationContextAware {
private static Logger logger = Logger
.getLogger(SpringApplicationContextUtil.class);
private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
logger.info("setApplicationContext=======" + applicationContext);
SpringApplicationContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return SpringApplicationContextUtil.applicationContext;
}
}
服务者实现:
@Component
public class Provider {
// @Autowired
// private JmsMessagingTemplate jmsMessagingTemplate;
public void send() {
JmsMessagingTemplate jmsMessagingTemplate = (JmsMessagingTemplate)SpringApplicationContextUtil.getApplicationContext().getBean("jmsMessagingTemplate");
// Destination destination = new ActiveMQQueue("helloWorld");
//发送消息
String message = "hello,everyone ,this is test!";
//发送主题
Topic topic = new ActiveMQTopic("helloWorld");
//开始生产发送消息
jmsMessagingTemplate.convertAndSend(topic, message);
}
}
消费者实现
/**
* 监听MQ消息
*
*/
@Component
public class ChannelStoreConsumer {
/**
* logger
*/
Logger logger = LoggerFactory.getLogger(this.getClass());
//必须有此注解进行监听主题为helloWorld的消息
@JmsListener(destination = "helloWorld")
public void receiveMessage(String msg) {
logger.info("storeResultService 接收消息" + msg);
}
}
如此,一个生产者消费者的demo就实现了,当然,一般情况下,生产者和消费者是在不同的项目里,毕竟它的作用就是实现消息传递的嘛。
推荐阅读
-
Spring Boot与Kotlin 整合全文搜索引擎Elasticsearch的示例代码
-
Spring Boot 数据校验@Valid+统一异常处理的实现
-
详解spring boot实现websocket
-
Spring boot搭建web应用集成thymeleaf模板实现登陆
-
Spring Boot中实现定时任务应用实践
-
Spring-boot结合Shrio实现JWT的方法
-
spring boot+thymeleaf+bootstrap实现后台管理系统界面
-
spring boot整合mybatis+mybatis-plus的示例代码
-
spring-boot整合ehcache实现缓存机制的方法
-
使用 Spring Boot 2.0 + WebFlux 实现 RESTful API功能