• Springboot+Activemq整合


    Springboot+Activemq整合

    1 导入整合所需要的依赖:

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-activemq</artifactId>
            </dependency>

    2 创建 application.properties文件

    spring.activemq.broker-url=tcp://127.0.0.1:61616
    spring.activemq.user=admin
    spring.activemq.password=admin
    server.port=8080
    queue=myqueue

    3.自定义配置文件QueueConfig 读取配置文件的队列名,根据队列名字创建一个Queue

     
    package com.example.demo;
    
    import javax.jms.Queue;
    
    import org.apache.activemq.ActiveMQConnectionFactory;
    import org.apache.activemq.command.ActiveMQQueue;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
    import org.springframework.jms.core.JmsTemplate;
    
    @Configuration
    public class QueueConfig {
    
        @Value("${queue}")
        private String queue;
    
        @Bean
        public Queue logQueue() {
            return new ActiveMQQueue(queue);
        }
    }
     

    4.创建生产者,可以直接使用提供的模板 JmsMessagingTemplate 进行消息的发送:

     
    package com.example.demo.producter;
    
    import javax.jms.Queue;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.core.JmsMessagingTemplate;
    import org.springframework.stereotype.Component;
    
    import com.example.demo.SpringbootActivemqApplication;
    
    @Component
    public class Producter {
        @Autowired
        private JmsMessagingTemplate jmsMessagingTemplate;
        @Autowired
        private Queue queue;
        private static Logger logger = LoggerFactory.getLogger(
    Producter 
    .class); public void send() { String str = "生产者生产数据:" + System.currentTimeMillis(); jmsMessagingTemplate.convertAndSend(queue, str); logger.info("生产者数据:{}", str); } }
     

    5.启动类:

     
    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ApplicationListener;
    import org.springframework.context.event.ContextRefreshedEvent;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    import com.example.demo.producter.Producter;
    import com.example.demo.producter.consumer.Consumer;
    
    @SpringBootApplication
    @EnableScheduling
    public class SpringbootActivemqApplication implements ApplicationListener<ContextRefreshedEvent> {
        @Autowired
        public Producter producter;
        @Autowired
        public Consumer consumer;
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootActivemqApplication.class, args);
            //onApplicationEvent方法 在启动springboot的时候 会运行该方法,可根据项目实际情况 选择合适调用消息发送方法
    
        }
    
        @Override
        public void onApplicationEvent(ContextRefreshedEvent event) {
            producter.send();
        }
    
    }
     

    6.启动项目,控制台输出内容:

       

    7.创建消费者,创建消费者比较容易,只需要监听队列就可以:

     
    package com.example.demo.producter.consumer;
    
    import org.springframework.jms.annotation.JmsListener;
    import org.springframework.stereotype.Component;
    
    @Component
    public class Consumer {
    
        @JmsListener(destination = "${queue}")
        public void receive(String msg) {
            System.out.println("监听器收到msg:" + msg);
        }
    
    }
     

    8.最后结果:

  • 相关阅读:
    李彦宏演讲被泼水:演讲时遇到意外情况该如何处理?
    人工智能,能为教育带来哪些改变?
    重磅!Python又第一了!网友:为什么找不到好工作?真相让人脸红…
    《营销管理必读12篇》读后感
    战略管理好书推荐,《战略管理必读12篇》位居榜首
    企业管理十大书
    童话里都是骗人的?用词向量解析故事中的性别偏见
    《领导力必读12篇》:领导力提升的艺术
    领导力提升:你找对方法了吗?
    分布式系统阅读笔记(十)-----P2P对等网络系统
  • 原文地址:https://www.cnblogs.com/lowerma/p/12317070.html
Copyright © 2020-2023  润新知