依赖

<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的更多相关文章

  1. spring boot整合activemq消息中间件

    spring boot整合activemq消息中间件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...

  2. activeMQ入门+spring boot整合activeMQ

    最近想要学习MOM(消息中间件:Message Oriented Middleware),就从比较基础的activeMQ学起,rabbitMQ.zeroMQ.rocketMQ.Kafka等后续再去学习 ...

  3. spring boot 整合activemq

    1 Spring Boot与ActiveMQ整合 1.1使用内嵌服务 (1)在pom.xml中引入ActiveMQ起步依赖 <properties> <spring.version& ...

  4. Spring Boot入门 and Spring Boot与ActiveMQ整合

    1.Spring Boot入门 1.1什么是Spring Boot Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品.无 ...

  5. Spring Boot与ActiveMQ整合

    Spring Boot与ActiveMQ整合 1使用内嵌服务 (1)在pom.xml中引入ActiveMQ起步依赖 <dependency> <groupId>org.spri ...

  6. RabbitMQ使用及与spring boot整合

    1.MQ 消息队列(Message Queue,简称MQ)——应用程序和应用程序之间的通信方法 应用:不同进程Process/线程Thread之间通信 比较流行的中间件: ActiveMQ Rabbi ...

  7. Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

    摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...

  8. spring boot整合jsp的那些坑(spring boot 学习笔记之三)

    Spring Boot 整合 Jsp 步骤: 1.新建一个spring boot项目 2.修改pom文件 <dependency>            <groupId>or ...

  9. spring boot 系列之四:spring boot 整合JPA

    上一篇我们讲了spring boot 整合JdbcTemplate来进行数据的持久化, 这篇我们来说下怎么通过spring boot 整合JPA来实现数据的持久化. 一.代码实现 修改pom,引入依赖 ...

随机推荐

  1. CodeForces-1221A-2048 Game-思维题

    You are playing a variation of game 2048. Initially you have a multiset ss of nn integers. Every int ...

  2. 2019 牛客多校第一场 D Parity of Tuples

    题目链接:https://ac.nowcoder.com/acm/contest/881/D 看此博客之前请先参阅吕凯飞的论文<集合幂级数的性质与应用及其快速算法>,论文中很多符号会被本文 ...

  3. MySQL数据库中,使用 group by 时,不重复字段如何拼接显示

    就不写文字描述了,直接用图和sql来表述吧. 这是测试数据,表名为 person 现在,我想按照性别进行分组,也就是字段 sex ,同时能将分组后的姓名全部显示出来. sql 语句如下: SELECT ...

  4. 尾插法-实现链表反转(有点bug,以后再来研究下)

    def func2(head): p = head.next while p.next: q = p.next p.next = q.next # 重点 head.next = q q.next = ...

  5. MySQL基础管理

    1.用户管理 1.用户的作用: 登录:管理相对应的库表 2.定义 定义用户名和白名单 all@'10.0.0.%' 命名用户名时,最好不要太长,要和业务相关 白名单类型: user@'10.0.0.5 ...

  6. sklearn中回归器性能评估方法

    explained_variance_score() mean_absolute_error() mean_squared_error() r2_score() 以上四个函数的相同点: 这些函数都有一 ...

  7. JS函数 函数调用 函数定义好后,是不能自动执行的,需要调用它,直接在需要的位置写函数名。

    函数调用 函数定义好后,是不能自动执行的,需要调用它,直接在需要的位置写函数名. 第一种情况:在<script>标签内调用. <script type="text/java ...

  8. 7python ruturn中的and与or.

    def test(): a = "" return a or "hehe" #如果a为真,输出a; 否则输出右边(比如0, "", [], ...

  9. CF850E Random Elections

    题意:一共有n个人,要在三个人中选prefer,一开始他们心中都会想好他们的排名(共6种),之后给出的判断不会矛盾.规则如下:一共有三轮,分别是a->b,b->c,c->a,每个人选 ...

  10. csps-模拟7980题解

    题面:https://www.cnblogs.com/Juve/articles/11712702.html 树: 我太sb了不知道DROT是1,还在sb找根 记录一个fa[]数组,表示x的祖先中第一 ...