springboot中集成多个rabbitmq

复制代码
package com.demo.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.annotation.Resource;



@Configuration
public class TestMQConfig {

    @Resource
    private ObjectMapper objectMapper;
   @Value("${spring.rabbitmq.host:10.1.1.1}")
    private  String host;
    @Value("${spring.rabbitmq.port:5672}")
    private  int port;
    @Value("${spring.rabbitmq.username:test}")
    private  String username;
    @Value("${spring.rabbitmq.virtual-host:test}")
    private  String virtualHost;
    @Value("${spring.rabbitmq.password:test}")
    private  String password;

    @Bean(name = "decorationConnectionFactory")
    @Primary
    public ConnectionFactory pmsConnectionFactory()  {
        return connectionFactory(host, port, username, password, virtualHost);
    }

    public CachingConnectionFactory connectionFactory(String host, int port, String username, String password, String virtual_host) {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        connectionFactory.setVirtualHost(virtual_host);
        return connectionFactory;
    }

    @Bean(name = "decorationRabbitListenerContainerFactory")
    @Primary
    public RabbitListenerContainerFactory pmsRabbitListenerContainerFactory(@Qualifier("decorationConnectionFactory") ConnectionFactory connectionFactory) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setMessageConverter(messageConverter());
        return factory;
    }


    @Bean
    public MessageConverter messageConverter() {
        return new Jackson2JsonMessageConverter(objectMapper);
    }

    @Bean(name = "BPMRabbitMQTemplate")
    @Primary
    public RabbitTemplate rabbitTemplate(
            @Qualifier("decorationConnectionFactory") ConnectionFactory connectionFactory
    ) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate.setMessageConverter(messageConverter());
        return rabbitTemplate;
    }


    /**
     * 定义队列
     *
     * @return
     */
    @Bean
    public Queue BPMQueue() {
        return new Queue("bpmstart.entry.group.0");
    }

    /**
     * 定义交换机
     *
     * @return
     */
    @Bean
    TopicExchange BPMExchange() {
        return new TopicExchange("bpmstart.entry");
    }


    /**
     * 交换机绑定队列
     *
     * @return
     */
    @Bean
    Binding bindingExchangeHandleEnergyMeter() {
        return BindingBuilder.bind(BPMQueue()).to(BPMExchange()).with("BPM");
    }

}
复制代码

 

posted @   甜菜波波  阅读(962)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2020-06-11 java dbhelper
2020-06-11 DevOps到底是什么意思?
2017-06-11 java中的线程同步
点击右上角即可分享
微信分享提示