• springboot-26-springboot 集成rabbitmq


    rabbitmq是基于AMQP规范的一个消息代理, 它可以兼容jms, 支持其他语言, 并且可以跨平台

    1, 安装

    1) 普通安装

    度娘: 

    2) docker 安装

    sudo docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:3-management

    安装成功后:  使用 guest/guest 用户登录

    2 使用: 

    1) 添加 rabbitmq的依赖

            <!--添加 rabbitmq的依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>

    2), 添加配置, 默认的配置为 localhost: 5672

    ########### rabbitmq 的配置 ******
    spring: 
      rabbitmq:
        host: 192.168.50.202
        port: 5672
    #    username: admin
    #    password: secret

    3), 生产者: 

    package com.wenbronk.enterprise.rabbitmq.send;
    
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.stereotype.Component;
    
    /**
     * 消息发送者
     * 实现接口, 为了开机就自动发送
     * Created by wenbronk on 2017/6/13.
     */
    @Component
    public class RabbitMQSender implements CommandLineRunner{
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
    
        @Override
        public void run(String... args) throws Exception {
            rabbitTemplate.convertAndSend("my-queue", "来自rabiitmq的问候");
        }
    }

    4) 消费者: 

    package com.wenbronk.enterprise.rabbitmq.receive;
    
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    
    /**
     * 消息接收者
     * Created by wenbronk on 2017/6/13.
     */
    @Component
    public class RabbitMQReceive {
    
        /**
         * 使用rabbitlistener接收消息
         * @param message
         */
        @RabbitListener(queues = "my-queue")
        public void receiveMessage(String message) {
            System.out.println("receive: " + message);
        }
    
    }

    5) ,使用队列模式: 

    package com.wenbronk.enterprise.rabbitmq.config;
    
    import org.springframework.amqp.core.Queue;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * 队列模式的bean
     * Created by wenbronk on 2017/6/13.
     */
    @Configuration
    public class QueueConfig {
    
        /**
         * 定义使用到的队列
         * @return
         */
        @Bean
        public Queue myQueue() {
            return new Queue("my-queue");
        }
    }

    启动后, 就会自动发送消息

     另外, 有看到过这个异常且无限循环的, 可以试下

    org.springframework.amqp.AmqpException: No method found for class

    https://jira.spring.io/browse/AMQP-573

      @Bean
        public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
            RabbitTemplate template = new RabbitTemplate(connectionFactory);
            template.setMessageConverter(new Jackson2JsonMessageConverter());
            return template;
        }
    
        @Bean
        public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
            SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
            factory.setConnectionFactory(connectionFactory);
            factory.setMessageConverter(new Jackson2JsonMessageConverter());
            return factory;
        }

    调用: 

    @RabbitListener(queues = "merchant", containerFactory="rabbitListenerContainerFactory")
    public void process(@Payload UpdateMerchant request) { 
         UpdateMerchantResponse response = new UpdateMerchantResponse();
        logger.info(request.getMerchantId() + "->" + response.getReturnCode());
     }
  • 相关阅读:
    yum和apt-get用法及区别
    Vim终极指南:所思即所得
    Vim 操作符命令和动作命令
    vim中文手册
    标准代码页(codepage)列表
    中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
    vim在系统剪切板的复制与粘贴
    linux中高亮显示文本的工具 -- bat
    pandas category数据类型
    pandas 数据类型转换
  • 原文地址:https://www.cnblogs.com/wenbronk/p/7001778.html
Copyright © 2020-2023  润新知