1. 程式人生 > 其它 >springboot中整合多個rabbitmq

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"); } }