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);
}
复制代码

 

posted @   不想当将军的好士兵  阅读(907)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示