SpringBoot整合activeMQ

SpringBoot整合activeMQ

  • 新建maven项目activemq-provider(提供者)

    1. pom.xml

    2.  <dependencies>
              <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
         
              <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-activemq</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
          </dependencies>
      
    3. 配置yml和主启动

      1. #Springboot启动端口
        server:
          port: 8080
        #ActiveMQ配置
        spring:
          activemq:
            broker-url: tcp://192.168.159.12:61616 #ActiveMQ服务器IP
            user: admin #ActiveMQ连接用户名
            password: admin #ActiveMQ连接密码
          jms:
            #指定连接队列还是主题
            pub-sub-domain: false # false = Queue |  true = Topic
        
        #定义服务上的队列名
        #myQueueName: springboot-activemq-queue
        myqueue: boot-activemq-queue
        
      2. @SpringBootApplication
        @EnableScheduling //开启定时推送消息
        public class Main_Produce {
            public static void main(String[] args) {
                SpringApplication.run(Main_Produce.class,args) ;
            }
        }
        
      3. 新建配置类,配置消息队列

        1. 
          @Configuration
          @EnableJms //开启消息
          public class ConfigBean {
              @Value("${myqueue}") //yml配置文件里面配置的队列名称
              private String myQueue;
              @Bean
              public ActiveMQQueue queue(){
                  return new ActiveMQQueue(myQueue);
              }
          }
          
      4. 新建生产者类

        1. @Service
          public class Queue_provider {
              @Autowired
              private JmsMessagingTemplate jmsMessagingTemplate;
              @Autowired
              private ActiveMQQueue queue;
              public void produceMsg(){
                  jmsMessagingTemplate.convertAndSend(queue,"*****"+ UUID.randomUUID().toString().substring(0,6));
              }
              //定时推送消息
              @Scheduled(fixedDelay = 3000)   
              public void produceScheduled(){
                  jmsMessagingTemplate.convertAndSend(queue,"定时投递消息"+ UUID.randomUUID().toString().substring(0,6));
                  System.out.println("定时任务执行了");
              }
          }
          
          
  • 新建maven项目activemq-consumer(消费者)

    1. pom.xml文件,和生产者一样

    2.   <dependencies>
              <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
              <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-activemq</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
         
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <version>2.2.1.RELEASE</version>
              </dependency>
          </dependencies>
      
    3. 配置yml和主启动

      1. server:
          port: 8888
        spring:
          activemq:
            broker-url: tcp://192.168.159.12:61616
            user: admin
            password: admin
          jms: #指定连接的是队列(Queue)还是主题(Topic)
            pub-sub-domain: false #false代表队列,true代表主题
        #定义连接的队列名
        myqueue: boot-activemq-queue
        
        
      2. 主启动

        1. @SpringBootApplication
          public class MainConsumer {
              public static void main(String[] args) {
                  SpringApplication.run(MainConsumer.class,args);
              }
          }
          
      3. 新建消费者类

        1. @Service
          public class Consumer {
              @JmsListener(destination = "${myqueue}") //监听模式,只要监听到生产者生产出消息,自动去读取
              public void recive(TextMessage textMessage) throws JMSException {
                  System.out.println("消费者收到消息"+textMessage.getText());
              }
          }
          
  • topic(订阅者)模式

    1. 新建topic-provide的maven项目

      1. pom.xml文件,和上面一致

      2. 主启动和配置类还有yml

        1. //主启动
          @SpringBootApplication
          @EnableScheduling
          public class TopicMain {
              public static void main(String[] args) {
                  SpringApplication.run(TopicMain.class,args);
              }
          }
          
          //配置类
          @Configuration
          @EnableJms
          public class ConfigBean {
              @Value("${myqueue}")
              private String queuetopic;
              @Bean
              public ActiveMQTopic getActiveMQ(){ //创建订阅者模式的队列
                  return new ActiveMQTopic(queuetopic);
              }
          }
          
          
        2. server:
            port: 9999
          spring:
            activemq:
              broker-url: tcp://192.168.159.12:61616
              user: admin
              password: admin
            jms:
              pub-sub-domain: true #订阅者模式
          myqueue: springboot-actemq-topic
          
        3. 新建provider

        4. @Component
          public class TopicProvider {
              @Autowired
              private JmsMessagingTemplate jmsMessagingTemplate;
              @Autowired
              private ActiveMQTopic activeMQTopic; //订阅模式
              @Scheduled(fixedDelay = 3000) //定时回调
              public void sendMsg(){
                  jmsMessagingTemplate.convertAndSend(activeMQTopic,"这是订阅者消息"+ UUID.randomUUID().toString().substring(0,6));
                  System.out.println("任务执行");
              }
          }
          
          
    2. 创建消费者

      1. 新建consumer的maven项目

      2. pom.xml的内容和上面一样

      3. 主启动不用修改

      4. yml文件

      5. server:
          port: 6789
        spring:
          activemq:
            broker-url: tcp://192.168.159.12:61616
            user: admin
            password: admin
          jms:
            pub-sub-domain: true #订阅者模式
        myqueue: springboot-activemq-topic
        
      6. 新建consumer类

      7. @Service
        public class TopicConsumer {
            @JmsListener(destination = "${myqueue}") //设置消息队列监听
            public void getMessage(TextMessage textMessage) throws JMSException {
                System.out.println("受到的消息"+textMessage.getText());
            }
        }
        
      8. 以同样的方式在创建一个消费者,只需修改yml文件的端口号

    3. 先启动消费者,然后在启动提供者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值