Springboot整合ActiveMQ
1.先导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>2.5.4</version>
</dependency>
2.配置activemq
spring.activemq.broker-url=tcp://IP地址:61616 spring.activemq.user=admin spring.activemq.password=admin #判断队列还是主题 false为队列 true为主题 不写的默认值也是队列 spring.jms.pub-sub-domain=false #自己定义队列名称 myqueue=boot-activemq-queue
3.配置Bean
@Component @EnableJms //开启jms适配的注解 public class ConfigBean { @Value("${myqueue}") private String myQueue; //按照刚刚配置的东西创建一个队列 @Bean public Queue queue(){ return new ActiveMQQueue(myQueue); } }
4.配置生产者
@Component public class Querue_Produce { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Queue queue; public void produceMsg(){ jmsMessagingTemplate.convertAndSend(queue,"***********:"+ UUID.randomUUID().toString().substring(0,6)); } }
5.测试
@Resource private Querue_Produce querue_produce; @Test void testSend() throws Exception { querue_produce.produceMsg(); }
新需求
每三分秒生产一个队列。
//间隔事件定时生产 每三秒执行一次 @Scheduled(fixedDelay = 3000) public void produceMsgScjeduled() { jmsMessagingTemplate.convertAndSend(queue,"***********Scheduled:" + UUID.randomUUID().toString().substring(0, 6)); System.out.println("***********Scheduled send"); }
然后在主启动类上添加注解
@EnableScheduling //激活定时任务
消费者接收消息
@JmsListener(destination = "${myqueue}") //设置监听器
public void receive(TextMessage textMessage) throws JMSException{
System.out.println("*****消费者收到消息:"+ textMessage.getText());
}
消息延迟
1.要使用延迟消息,需要在activemq.xml中开启

在生产消息的时候添加消息延迟
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Resource(name = "queue")
private Queue queue;
public void produceMsg() {
Map<String, Object> headers = new HashMap<>();
//发送延迟队列,延迟24 小时
headers.put(ScheduledMessage.AMQ_SCHEDULED_DELAY, 1000 * 3600 * 24);
jmsMessagingTemplate.convertAndSend(queue,"***********:" + UUID.randomUUID().toString().substring(0, 6),headers);
}
浙公网安备 33010602011771号