zoukankan      html  css  js  c++  java
  • SpringBoot整合ActiveMQ

    点对点(P2P)

      创建springboot项目

        

      导入依赖

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

      生产者

        步骤一:applicationContext.properties文件

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

        步骤二:创建生产者

    package com.wn.p2p;
    
    import org.apache.activemq.command.ActiveMQQueue;
    import org.springframework.jms.core.JmsTemplate;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.Resource;
    
    @Component
    public class P2Pprovider {
        //注入JMSTemplate
        @Resource
        private JmsTemplate jmsTemplate;
    
        public void setMessage(){
            //点对点创建队列
            ActiveMQQueue queue=new ActiveMQQueue("boot_queue");
            jmsTemplate.convertAndSend(queue,"消息123");
        }
    }

        步骤三:创建controller

    package com.wn.p2p;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    
    @RestController
    public class P2PController {
        @Resource
        private P2Pprovider p2Pprovider;
    
        @RequestMapping("/setMessage")
        public String setMessage(){
            p2Pprovider.setMessage();
            return "success";
        }
    }

        步骤四:启动

          

           

      消费者  

        步骤一:application.properties文件

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

        步骤二:创建消费者

    package com.wn;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.jms.annotation.JmsListener;
    
    import javax.jms.JMSException;
    import javax.jms.TextMessage;
    
    @SpringBootApplication
    public class P2pConsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(P2pConsumerApplication.class, args);
        }
    
        @JmsListener(destination = "boot_queue")
        public void getMessage(TextMessage message) throws JMSException {
            System.out.println("接收到的信息:"+message.getText());
        }
    }

        步骤三:启动

          

          

    发布/订阅(Pub/Sub)

      结构

        

      导入依赖  

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

      消费者

        步骤一:applicationContext.properties文件

    spring.activemq.broker-url=tcp://127.0.0.1:61616
    spring.activemq.user=admin
    spring.activemq.password=admin
    server.port=8082
    
    #topic配置
    spring.jms.pub-sub-domain=true

        步骤二:创建消费者

    package com.wn;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    import org.springframework.jms.annotation.JmsListener;
    import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
    import org.springframework.jms.config.JmsListenerContainerFactory;
    
    import javax.jms.ConnectionFactory;
    import javax.jms.JMSException;
    import javax.jms.TextMessage;
    
    @SpringBootApplication
    public class PubSubConsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(PubSubConsumerApplication.class, args);
        }
    
        //springboot默认只配置queue类型消息,如果要使用topic类型的消息,则需要配置该bean
       /* @Bean
        public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory){
            DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
            factory.setConnectionFactory(connectionFactory);
            //这里必须设置为true,false则表示是queue类型
            factory.setPubSubDomain(true);
            return factory;
        }*/
    
        //消费者消费消息
        @JmsListener(destination = "boot_topic")
        public void getMessage(TextMessage message) throws JMSException {
            System.out.println("接收到消息:"+message.getText());
        }
    }

        步骤三:启动

           

      生产者

        步骤一:applicationContext.properties文件

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

        步骤二:创建生产者

    package com.wn.pub_sub;
    
    import org.apache.activemq.command.ActiveMQTopic;
    import org.springframework.jms.core.JmsTemplate;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.Resource;
    
    @Component
    public class Pub_Sub_Provider {
    
        @Resource
        private JmsTemplate jmsTemplate;
    
        public void setMessage(){
            //创建主题
            ActiveMQTopic topic=new ActiveMQTopic("boot_topic");
            //springboot默认是队列,如果需要如下设置
            jmsTemplate.setPubSubDomain(true);
            //发送消息
            jmsTemplate.convertAndSend(topic,"消息456");
        }
    
    }

        步骤三:创建controller

    package com.wn.pub_sub;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    
    @RestController
    public class Pub_Sub_Controller {
        @Resource
        private Pub_Sub_Provider provider;
    
        @RequestMapping("/setMessage")
        public String setMessage(){
            provider.setMessage();
            return "success";
        }
    }

        步骤四:启动

          

          

          此时可以查看消费者是否成功接收到消息

          

  • 相关阅读:
    localtime 和 localtime_r 的区别
    mysql1130远程连接没有权限的解决方法
    pthread_create
    GDB Core,gdb 调试大全,core文件调试
    非root用户 如何将cscope安装到指定目录,vim74安装
    linux查看网络链接状况命令netstat
    在Linux系统如何让程序开机时自动启动
    Linux开机启动程序详解
    u盘出现大文件无法复制的解决
    用JSON报的一个错误java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeExcep
  • 原文地址:https://www.cnblogs.com/wnwn/p/12308028.html
Copyright © 2011-2022 走看看