MQ

xss大约 2 分钟MQMQ

@Configuration
public class RabbitConfiguration {
@Resource
private CachingConnectionFactory connectionFactory;


//---------------------------------------------------------------------------------

@Bean(name = "listenerContainer")
public SimpleRabbitListenerContainerFactory listenerContainer() {
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory);
    factory.setPrefetchCount(1);   //将PrefetchCount设定为1表示一次只能取一个
    return factory;
}

//---------------------------------------------------------------------------------



@Bean("directExchange")  //定义交换机Bean,可以很多个
public Exchange directExchange(){
    return ExchangeBuilder.directExchange("amq.direct").build();
}

//---------------------------------------------------------------------------------

@Bean("directDlExchange")  //创建一个新的死信交换机
public Exchange directDlExchange(){
    return ExchangeBuilder.directExchange("dlx.direct").build();
}

//---------------------------------------------------------------------------------

//发布订阅 fanoutExchange

@Bean("fanoutExchange")
public Exchange fanoutExchange(){         //注意这里是fanoutExchange   路由

    return ExchangeBuilder.fanoutExchange("amq.fanout").build();
}


//---------------------------------------------------------------------------------


@Bean("xssQueue")     //定义消息队列
public Queue queue(){
    return QueueBuilder
            .nonDurable("xss")   //非持久化类型 //.durable() 持久化类型
            .deadLetterExchange("dlx.direct")   //指定死信交换机
            .deadLetterRoutingKey("dl-xss")   //指定死信RoutingKey
            .ttl(5000)            //ttl  多久不处理进入死信队列
            .maxLength(10)          ///
            .build();
}

//---------------------------------------------------------------------------------

@Bean("xssQueue1")     //定义消息队列
public Queue queue1(){
    return QueueBuilder
            .nonDurable("xss1")   //非持久化类型 //.durable() 持久化类型
            .deadLetterExchange("dlx.direct")   //指定死信交换机
            .deadLetterRoutingKey("dl-xss")   //指定死信RoutingKey
            .ttl(5000)            //ttl  多久不处理进入死信队列
            .maxLength(10)          ///
            .build();
}


@Bean("xssQueue2")     //定义消息队列
public Queue queue2(){
    return QueueBuilder
            .nonDurable("xss2")   //非持久化类型 //.durable() 持久化类型
            .deadLetterExchange("dlx.direct")   //指定死信交换机
            .deadLetterRoutingKey("dl-xss")   //指定死信RoutingKey
            .ttl(5000)            //ttl  多久不处理进入死信队列
            .maxLength(10)          ///
            .build();
}

//---------------------------------------------------------------------------------



@Bean("xssDlQueue")   //创建一个新的死信队列
public Queue dlQueue(){
    return QueueBuilder
            .nonDurable("dl-xss")
            .build();
}


//---------------------------------------------------------------------------------




@Bean("hqQueue1")
public Queue hqQueue1(){
    return QueueBuilder.nonDurable("hq1").build();    //  同一个队列
}

@Bean("hqQueue2")
public Queue hqQueue2(){
    return QueueBuilder.nonDurable("hq1").build();      //  同一个队列
}


//---------------------------------------------------------------------------------



@Bean("binding")
public Binding binding(@Qualifier("directExchange") Exchange exchange,   //普通交换机 directExchange
                       @Qualifier("xssQueue") Queue queue){
    //将我们刚刚定义的交换机和队列进行绑定
    return BindingBuilder
            .bind(queue)   //绑定队列
            .to(exchange)  //到交换机
            .with("my-xss")   //使用自定义的routingKey
            .noargs();
}


//---------------------------------------------------------------------------------



@Bean("dlBinding")   //死信交换机和死信队列进绑定
public Binding dlBinding(@Qualifier("directDlExchange") Exchange exchange,    //死信交换机 directDlExchange
                         @Qualifier("xssDlQueue") Queue queue){
    return BindingBuilder
            .bind(queue)
            .to(exchange)
            .with("dl-xss")         //绑定 死信队列
            .noargs();
}


//---------------------------------------------------------------------------------




@Bean("binding")
public Binding bindingxss1(@Qualifier("fanoutExchange") Exchange exchange,
                        @Qualifier("xssQueue1") Queue queue){
    return BindingBuilder
            .bind(queue)
            .to(exchange)
            .with("xss1")             //不同队列 绑定同一个交换机
            .noargs();
}


@Bean("binding2")
public Binding bindingxss2(@Qualifier("fanoutExchange") Exchange exchange,
                        @Qualifier("xssQueue2") Queue queue){
    return BindingBuilder
            .bind(queue)
            .to(exchange)
            .with("xss2")                //不同队列 绑定同一个交换机
            .noargs();
}





//---------------------------------------------------------------------------------





@Bean("binding")
public Binding binding1(@Qualifier("fanoutExchange") Exchange exchange,
                        @Qualifier("hqQueue1") Queue queue){
    return BindingBuilder
            .bind(queue)
            .to(exchange)
            .with("hq1")             //同一个队列 绑定同一个交换机  routing key 不同
            .noargs();
}


@Bean("binding2")
public Binding binding2(@Qualifier("fanoutExchange") Exchange exchange,
                        @Qualifier("hqQueue2") Queue queue){
    return BindingBuilder
            .bind(queue)
            .to(exchange)
            .with("hq2")                //同一个队列 绑定同一个交换机  routing key 不同
            .noargs();
}


//---------------------------------------------------------------------------------






@Bean("jacksonConverter")   //直接创建一个用于JSON转换的Bean
public Jackson2JsonMessageConverter converter(){
    return new Jackson2JsonMessageConverter();
}



//---------------------------------------------------------------------------------

}

Loading...