zoukankan      html  css  js  c++  java
  • Spring boot 集成MQ

    import lombok.extern.java.Log;
    import org.springframework.amqp.core.TopicExchange;
    import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
    import org.springframework.amqp.rabbit.connection.ConnectionFactory;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    
    /**
     * @author 周志伟
     * @projectname 项目名称: ${project_name}
     * @classname: RabbitConfig
     * @description:
     * @date 2018/6/22:10:00
     */
    @Configuration
    @Log
    public class RabbitConfig {
        @Qualifier("firstConnectionFactory")
        @Autowired
        public ConnectionFactory connectionFactory;
    
        @Autowired
        public MQProperties mqProperties;
    
    
        @Bean(name="firstRabbitTemplate")
        public RabbitTemplate firstRabbitTemplate(){
            log.info("########################初始化rabitTemplate################################");
            RabbitTemplate firstRabbitTemplate = new RabbitTemplate(connectionFactory);
            return firstRabbitTemplate;
        }
    
    
        @Bean
        public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
            SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
            factory.setConnectionFactory(connectionFactory);
            factory.setMessageConverter(new Jackson2JsonMessageConverter());
            return factory;
        }
    
    
        @Bean
        public TopicExchange defaultExchange() {
            return new TopicExchange(mqProperties.getCar_exchange());
        }
    package com.car.config;
    
    import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
    import org.springframework.amqp.rabbit.connection.ConnectionFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * @author 周志伟
     * @projectname 项目名称: ${project_name}
     * @classname: ConnectionFactoryConfig
     * @description:初始化数据源
     * @date 2018/6/22:11:30
     */
    @Configuration
    public class ConnectionFactoryConfig {
        @Bean(name="firstConnectionFactory")
        public ConnectionFactory firstConnectionFactory(@Value("${spring.rabbitmq.car_host}") String host,
                                                        @Value("${spring.rabbitmq.car_port}") int port,
                                                        @Value("${spring.rabbitmq.car_username}") String username,
                                                        @Value("${spring.rabbitmq.car_password}") String password,
                                                        @Value("${spring.rabbitmq.car_vhost}") String virtualhost
        ){
            CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
            connectionFactory.setHost(host);
            connectionFactory.setPort(port);
            connectionFactory.setUsername(username);
            connectionFactory.setPassword(password);
            connectionFactory.setVirtualHost(virtualhost);
            return connectionFactory;
        }
    }
    package com.car.config;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.amqp.core.Binding;
    import org.springframework.amqp.core.BindingBuilder;
    import org.springframework.amqp.core.Queue;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.stereotype.Component;
    
    /**
     * @author 周志伟
     * @projectname 项目名称: ${project_name}
     * @classname: RabbitMQ_Queue
     * @description:创建队列
     * @date 2018/6/22:13:09
     */
    @Configuration
    @Component
    public class RabbitMQQueue extends RabbitConfig{
        Logger logger = LoggerFactory.getLogger(RabbitMQQueue.class);
    
        public RabbitMQQueue(){
            logger.info("############### RabbitMQ Queue 创建 ###############");
        }
    
    
    
        @Bean
        public Queue CreationCarQueue() {
            logger.info("创建队列:{}", mqProperties.getCar_queuename());
            return new Queue(mqProperties.getCar_queuename());
        }
    
    
    
        @Bean
        public Binding binding() {
            logger.info("绑定队列,exchange:{},routingKey:{},queueName:{}", mqProperties.getCar_exchange(), mqProperties.getCar_routingkey(), mqProperties.getCar_queuename());
            return BindingBuilder.bind(CreationCarQueue()).to(defaultExchange()).with(mqProperties.getCar_routingkey());
        }
    }
    package com.car.modules.MqMsg.mq;
    
    
    import com.carloan.feign.info.InserttheorderServiceFeign;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.messaging.handler.annotation.Payload;
    import org.springframework.stereotype.Component;
    
    import java.io.UnsupportedEncodingException;
    
    
    /**
     * @author 周志伟
     * @projectname 项目名称: ${project_name}
     * @classname: ReqCarMqMsg
     * @description:配置监听
     * @date 2018/5/28:10:50
     */
    
    @Component
    public class ReqCarMqMsg{
    
        private Logger logger = LoggerFactory.getLogger(ReqCarMqMsg.class);
    
        
    
        @RabbitListener(queues = "${spring.rabbitmq.car_queuename}", containerFactory = "rabbitListenerContainerFactory")
        public void process(@Payload byte[] bytes) throws UnsupportedEncodingException {
            String result = null;
            try {
                result = new String(bytes, "UTF8");
                logger.info("监听到消息==========="+  result);
            } catch (UnsupportedEncodingException e) {
                logger.error("监听车贷门店Mq: insuranceTrial UnsupportedEncodingException error :{}",e);
            } catch (Exception e){
                logger.error("监听车贷门店Mq: insuranceTrial Exception error :{}",e);
            }
        }
    }
    package com.car.modules.MqMsg.mq;
    
    import com.car.config.MQProperties;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.amqp.rabbit.support.CorrelationData;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Component;
    
    import java.util.UUID;
    
    /**
     * @author 周志伟
     * @projectname 项目名称: ${project_name}
     * @classname: PushMq
     * @description:推送消息
     * @date 2018/6/25:9:52
     */
    @Component
    public class PushMq {
        Logger logger = LoggerFactory.getLogger(PushMq.class);
    
        @Qualifier("firstRabbitTemplate")
        @Autowired
        private RabbitTemplate rabbitTemplate;
        @Autowired
        public MQProperties mqProperties;
    
        public void pushmessage(String message){
            try{
                CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString());
                rabbitTemplate.convertAndSend(mqProperties.getCar_exchange(), mqProperties.getCar_put_routingkey(), message,correlationId);
                logger.info("推送消息:{}", message);
            }catch (Exception e){
                logger.error("推送异常:{}",e);
            }
    
        }
    }
  • 相关阅读:
    快排
    Single Number II
    简单工厂和工厂方法
    Implement strStr()
    Linked List Cycle II
    Linked List Cycle
    适配器模式
    Struts2的ActionContext
    javaScript学习随笔
    Tomcat 基本配置(转)
  • 原文地址:https://www.cnblogs.com/yy123/p/9262854.html
Copyright © 2011-2022 走看看