Spring Boot 整合 ActiveMQ
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!--消息队列连接池-->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.0</version>
</dependency>
配置文件(application.yml)
server:
port: 61616
spring:
activemq:
broker-url: tcp://localhost:61616
user: admin
password: admin
jms:
pub-sub-domain: false # false=queue true=topic
#定义队列名称
myqueue: activemq-queue
mytopic: activemq-topic
#true 表示使用内置的MQ,false则连接服务器
spring.activemq.in-memory=false
#true表示使用连接池;false时,每发送一条数据创建一个连接
spring.activemq.pool.enabled=true
#连接池最大连接数
spring.activemq.pool.max-connections=10
#空闲的连接过期时间,默认为30秒
spring.activemq.pool.idle-timeout=30000
#强制的连接过期时间,与idleTimeout的区别在于:
idleTimeout是在连接空闲一段时间失效,而expiryTimeout不管当前连接的情况,只要达到指定时间就失效。默认为0,never
spring.activemq.pool.expiry-timeout=0
定义Queue与Topic
@Configuration
@EnableJms
public class QueueBeanConfig {
@Value("${myqueue}")
private String myqueue;
//定义存放消息的队列
@Bean
public Queue queue() {
return new ActiveMQQueue(myqueue);
}
}
@Configuration
@EnableJms
public class TopicBeanConfig {
@Value("${mytopic}")
private String mytopic;
//定义存放消息的队列
@Bean
public Topic topic() {
return new ActiveMQTopic(mytopci);
}
}
生产者
public class QueueProducer {
//注入存放消息的队列,用于下列方法一
@Autowired
private Queue queue;
//注入springboot封装的工具类
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
public void send(String name) {
//方法一:添加消息到消息队列
jmsMessagingTemplate.convertAndSend(queue, name);
//方法二:这种方式不需要手动创建queue,系统会自行创建名为test的队列
jmsMessagingTemplate.convertAndSend("test", name);
}
//间隔时间3s定投,需要在主启动类添加注解:@EnableScheduling
@Scheduled(fixedDelay = 3000)
public void send1(String name) {
jmsMessagingTemplate.convertAndSend(queue, name);
}
}
public class TopicProducer {
//注入存放消息的队列,用于下列方法一
@Autowired
private Topic topic;
//注入springboot封装的工具类
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
public void send(String name) {
jmsMessagingTemplate.convertAndSend(topic, name);
}
//间隔时间3s定投,需要在主启动类添加注解:@EnableScheduling
@Scheduled(fixedDelay = 3000)
public void send1(String name) {
jmsMessagingTemplate.convertAndSend(topic, name);
}
}
消费者
public class QueueConsumer {
// 使用JmsListener配置消费者监听的队列
// @JmsListener如果不指定独立的containerFactory的话只能支持一直模式:或者是点对点,或者是消息订阅
@JmsListener(destination = "${myqueue}")
public void receive(TextMessage textMessage) throws JMSException {
System.out.println(textMessage.getText());
}
// 双向列队:将return回的值,再发送的"out.queue"队列中(其中name是接收到的消息)
// SendTo 会将此方法返回的数据, 写入到 OutQueue 中去.
@JmsListener(destination = "${myqueue}")
@SendTo("outqueue")
public String handleMessage(String name) {
return "成功接受Name:" + name;
}
}
public class TopicCustomer {
/**
* 创建2个消费者
*/
@JmsListener(destination = "mytopic")
public void subscriber(String text) {
System.out.println("消费者1:" + text);
}
@JmsListener(destination = "mytopic")
public void subscriber1(String text) {
System.out.println("消费者2:" + text);
}
}
Spring Boot 整合 ActiveMQ的更多相关文章
- spring boot整合activemq消息中间件
spring boot整合activemq消息中间件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...
- activeMQ入门+spring boot整合activeMQ
最近想要学习MOM(消息中间件:Message Oriented Middleware),就从比较基础的activeMQ学起,rabbitMQ.zeroMQ.rocketMQ.Kafka等后续再去学习 ...
- spring boot 整合activemq
1 Spring Boot与ActiveMQ整合 1.1使用内嵌服务 (1)在pom.xml中引入ActiveMQ起步依赖 <properties> <spring.version& ...
- Spring Boot入门 and Spring Boot与ActiveMQ整合
1.Spring Boot入门 1.1什么是Spring Boot Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品.无 ...
- Spring Boot与ActiveMQ整合
Spring Boot与ActiveMQ整合 1使用内嵌服务 (1)在pom.xml中引入ActiveMQ起步依赖 <dependency> <groupId>org.spri ...
- RabbitMQ使用及与spring boot整合
1.MQ 消息队列(Message Queue,简称MQ)——应用程序和应用程序之间的通信方法 应用:不同进程Process/线程Thread之间通信 比较流行的中间件: ActiveMQ Rabbi ...
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...
- spring boot整合jsp的那些坑(spring boot 学习笔记之三)
Spring Boot 整合 Jsp 步骤: 1.新建一个spring boot项目 2.修改pom文件 <dependency> <groupId>or ...
- spring boot 系列之四:spring boot 整合JPA
上一篇我们讲了spring boot 整合JdbcTemplate来进行数据的持久化, 这篇我们来说下怎么通过spring boot 整合JPA来实现数据的持久化. 一.代码实现 修改pom,引入依赖 ...
随机推荐
- delphi基础篇之单元文件
Delphi单元文件 unit MainFrm; {库单元文件头} interface {接口部分由Interface开始implementation结束.声明引用的单元,常量,数据类型 ...
- 手机网站Meta的使用
meta指元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 标签位于文档的头部,不包含任何内容. 标签的属性定义了与文档相关联的名称/值对. ...
- 「LibreOJ NOI Round #2」签到游戏
题目 瞎猜一下我们只要\(n\)次询问就能确定出\(\{A_i\}\)来 感受一下大概是询问的区间越长代价就越小,比如询问\([l,n]\)或\([1,r]\)的代价肯定不会超过\([l,r]\) 所 ...
- java异常继承何类,运行时异常与一般异常的区别
一.基本概念 Throwable是所有异常的根,java.lang.ThrowableError是错误,java.lang.ErrorException是异常,java.lang.Exception ...
- php 执行mysql inset 指令无效
网数据库里插入一条 inset into je_user("name","va") values("df","12"), ...
- RAKsmart服务器受消费者青睐的原因
随着互联网的快速发展,网站建设变得越来越重要,现在很多做外贸网站的都会选择美国服务器来建设网站,近年来RAKsmart服务器受到广大站长的欢迎,那RAKsmart服务器受消费者青睐的关键是什么呢. 1 ...
- BCZM : 1.4
书店促销活动,某套书一共有五卷.假设每一卷单独销售均需8欧元,多买则有折扣,具体折扣如下: 2 5% 3 10% 4 20% 5 25% 设计算法,计算出读者购买一批书的 ...
- Android欢迎页短暂白屏
在style中application theme下添加以下代码: <item name="android:windowIsTranslucent" >true</ ...
- jquery实现文字由下到上循环滚动的实例代码
<div id="oDiv"> <ul id="oUl"> <li>第1个li元素</li> <li> ...
- CSS——before和after伪元素
之所以被称为伪元素,是因为他们不是真正的页面元素,html没有对应的元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用诸如页面元素一样的css样式,表面上看上去貌似是页面的某些元素来展现 ...