本文会持续更新……用到什么写什么……
本文中一些直接启动没配置说明的内容在纯净框架123集中有记录;
一、activemq
1> 打开pom.xml配置文件:
如下内容:
<!-- activemq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.messaginghub</groupId>
<artifactId>pooled-jms</artifactId>
</dependency>
2> 打开src/main/resources中的application.properties配置文件:
如下内容:
#activemq
spring.activemq.broker-url=tcp://192.168.1.141:61616?wireFormat.maxInactivityDurationInitalDelay=30000
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.packages.trusted=com.activemq.bean,java.lang
spring.activemq.pool.enabled=true
spring.activemq.pool.max-connections=50
spring.jms.pub-sub-domain=true
spring.jms.template.default-destination=active.default.destination
内容中192.168.1.141是我自己创建的linux虚拟机、mq服务已经启动
3> 打开springbootApplication启动类、新增注解:@EnableScheduling【定时器注解】
我是用定时器去跑业务的、大家也可以用发送请求的方式去调用mq;
4> 新增mq包、创建2个类:
类ScheduleController【定时器类】:
【备注:public static String CARGROUP_TOPIC_NAME = "ws"; 】其中ws就是存在mq服务器的key键名称;
如下内容:
package com.ws.mq;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduleController {
public static String CARGROUP_TOPIC_NAME = "ws";
int i = 0;
@Autowired
private JmsTemplate jmsTemplate;
/**
* cron中的参数说明 分别表示秒(0-59),分(0-59),时(0-23),日期天/日(1-31),月份(1-12)
* 星期(1-7,1表示星晴天,7表示星期六),年(可以缺省。取值范围是1970-2099)
*
*
* 除此之外,还有一些特殊符号: 1) * *号,表示每,如果用*号占位,则表示每秒每分每时每天每月每年……这些 例如 0 30 8 * * ?
* 每天8:30执行 2)??问号,只能出现在日期和星期这两个位置,表示这个位置的值不确定,例如上个例子每天8:30点执行,
* 所以第六位星期的位置,我们是不需要关注的,就是不确定的值。如果给定一个确定的值,那么日期和星期就可能会出现矛盾。 3) - -减号,表示范围
* 例如12-15 可以表示12,13,14,15点执行 4), ,逗号,表示一个列表值,例如星期取值在1,3,5 就是在星期一三五执行 5) /
* /斜杠,例如0/1 开始值为0 步长为1 0/1 每分钟执行一次
*
*/
// @Scheduled(cron="0 0/1 * * * ?")
// public void start() {
// System.out.println("每分钟执行一次aaaaaaaaaaaaaaaa");
// }
/**
* 每10秒执行一次
*/
// @Scheduled(fixedRate=10000)
// public void task1() {
// System.out.println("每10秒执行一次bbbbbbbbbbbbbbbb");
// }
/**
* 每30秒执行一次
*/
@Scheduled(fixedRate = 20000)
public void task2() {
i++;
System.out.println("每20秒执行的第" + i + "次--------------------------------------------------");
jmsTemplate.send(CARGROUP_TOPIC_NAME, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage();
textMessage.setText("第" + i + "次的值:ssss" + i);
return textMessage;
}
});
}
}
类ActiveMsgListener【监听器类】:
如下内容:
package com.ws.mq;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;
@Service
public class ActiveMsgListener {
@JmsListener(destination = "ws")
public void rctiveMsg(String message) {
System.out.println("------监听到activemq的数据" + message);
}
}
【备注:@JmsListener(destination = "ws") 】其中ws就是存在mq服务器的key键名称;
5> 启动springboot 连接mq:
连接之前mq服务器如图:
启动springboot定时器后如图:
此时springboot 连接 activemq 功能结束;
二、activemq