package com.objecteye.config; import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitmqConfig { public static final String QUEUE_INFORM_STORE = "queue_inform_store"; public static final String QUEUE_INFORM_ALARM = "queue_inform_alarm"; public static final String QUEUE_INFORM_PERSON = "queue_inform_person"; public static final String QUEUE_INFORM_FORBIDDEN_TASK = "queue_inform_forbidden"; public static final String EXCHANGE_TOPICS_INFORM = "exchange_topics_inform"; /** * 配置交换机 * ExchangeBuilder提供了fonout,direct,topic,header的交换机的配置 * * @return */ @Bean(EXCHANGE_TOPICS_INFORM) public Exchange EXCHANGE_TOPICS_INFORM() { return ExchangeBuilder.topicExchange(EXCHANGE_TOPICS_INFORM).durable(true).build(); } /** * 声明队列 * * @return */ @Bean(QUEUE_INFORM_STORE) public Queue QUEUE_INFORM_STORE() { return new Queue(QUEUE_INFORM_STORE); } @Bean(QUEUE_INFORM_ALARM) public Queue QUEUE_INFORM_ALARM() { return new Queue(QUEUE_INFORM_ALARM); } @Bean(QUEUE_INFORM_PERSON) public Queue QUEUE_INFORM_PERSON() { return new Queue(QUEUE_INFORM_PERSON); } @Bean(QUEUE_INFORM_FORBIDDEN_TASK) public Queue QUEUE_INFORM_FORBIDDEN_TASK() { return new Queue(QUEUE_INFORM_FORBIDDEN_TASK); } /** * 绑定队列到交换机 * * @return */ @Bean public Binding BINDING_QUEUE_INFORM_ALARM(@Qualifier(QUEUE_INFORM_ALARM) Queue queue, @Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange) { return BindingBuilder.bind(queue).to(exchange).with("inform.#.alarm.#").noargs(); } //绑定队列到交换机 @Bean public Binding BINDING_QUEUE_INFORM_STORE(@Qualifier(QUEUE_INFORM_STORE) Queue queue, @Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange) { return BindingBuilder.bind(queue).to(exchange).with("inform.#.store.#").noargs(); } @Bean public Binding BINDING_QUEUE_INFORM_PERSON(@Qualifier(QUEUE_INFORM_PERSON) Queue queue, @Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange) { return BindingBuilder.bind(queue).to(exchange).with("inform.#.person.#").noargs(); } @Bean public Binding BINDING_QUEUE_INFORM_FORBIDDEN_TASK(@Qualifier(QUEUE_INFORM_FORBIDDEN_TASK) Queue queue, @Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange) { return BindingBuilder.bind(queue).to(exchange).with("inform.#.forbidden.#").noargs(); } }