package com.panzhihua.service_community.config;
|
|
import org.springframework.amqp.core.*;
|
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
|
import org.springframework.amqp.support.converter.MessageConverter;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@Configuration
|
public class RabbitmqConfig {
|
|
|
public static final String PreOrder_QUEUE="preOrder.queue";
|
public static final String PreOrder_ROUTING_KEY="preOrder.key";
|
public static final String PreOrder_EXCHANGE="preOrder.exchange";
|
|
public static final String Order_QUEUE="order.queue";
|
public static final String Order_ROUTING_KEY="order.key";
|
public static final String Order_EXCHANGE="order.exchange";
|
|
public static final String RAFFLE_QUEUE="raffle.queue";
|
public static final String RAFFLE_ROUTING_KEY="raffle.key";
|
public static final String RAFFLE_EXCHANGE="raffle.exchange";
|
|
|
|
@Bean
|
public Queue preOrderQueue(){
|
return new Queue(PreOrder_QUEUE,true,false,false,null);
|
}
|
|
@Bean
|
public Exchange preOrderExchange(){
|
Map<String, Object> arguments = new HashMap<>();
|
arguments.put("x-delayed-type", ExchangeTypes.DIRECT);
|
return new CustomExchange(PreOrder_EXCHANGE,"x-delayed-message",true,false,arguments);
|
}
|
|
@Bean
|
public Binding preOrderBinding(){
|
return BindingBuilder.bind(preOrderQueue()).to(preOrderExchange()).with(PreOrder_ROUTING_KEY).noargs();
|
}
|
|
@Bean
|
public Queue raffleQueue(){
|
return new Queue(RAFFLE_QUEUE,true,false,false,null);
|
}
|
|
@Bean
|
public Exchange raffleExchange(){
|
Map<String, Object> arguments = new HashMap<>();
|
arguments.put("x-delayed-type", ExchangeTypes.DIRECT);
|
return new CustomExchange(RAFFLE_EXCHANGE,"x-delayed-message",true,false,arguments);
|
}
|
|
@Bean
|
public Binding raffleBinding(){
|
return BindingBuilder.bind(raffleQueue()).to(raffleExchange()).with(RAFFLE_ROUTING_KEY).noargs();
|
}
|
|
@Bean
|
public Queue orderQueue(){
|
return new Queue(Order_QUEUE,true,false,false,null);
|
}
|
|
@Bean
|
public Exchange orderExchange(){
|
Map<String, Object> arguments = new HashMap<>();
|
arguments.put("x-delayed-type", ExchangeTypes.DIRECT);
|
return new CustomExchange(Order_EXCHANGE,"x-delayed-message",true,false,arguments);
|
}
|
|
@Bean
|
public Binding orderBinding(){
|
return BindingBuilder.bind(orderQueue()).to(orderExchange()).with(Order_ROUTING_KEY).noargs();
|
}
|
|
public Queue directQueue() {
|
// durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效
|
// exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable
|
// autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。
|
// return new Queue("TestDirectQueue",true,true,false);
|
|
//一般设置一下队列的持久化就好,其余两个就是默认false
|
return new Queue("directQueue",true);
|
}
|
|
//Direct交换机 起名:TestDirectExchange
|
@Bean
|
DirectExchange directExchange() {
|
// return new DirectExchange("TestDirectExchange",true,true);
|
return new DirectExchange("directExchange",true,false);
|
}
|
|
//绑定 将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting
|
@Bean
|
Binding bindingDirect() {
|
return BindingBuilder.bind(directQueue()).to(directExchange()).with("directRouting");
|
}
|
|
|
public Queue pushQueue() {
|
// durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效
|
// exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable
|
// autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。
|
// return new Queue("TestDirectQueue",true,true,false);
|
|
//一般设置一下队列的持久化就好,其余两个就是默认false
|
return new Queue("pushQueue",true);
|
}
|
|
//Direct交换机 起名:TestDirectExchange
|
@Bean
|
DirectExchange pushExchange() {
|
// return new DirectExchange("TestDirectExchange",true,true);
|
return new DirectExchange("PUSH_Exchange",true,false);
|
}
|
|
//绑定 将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting
|
@Bean
|
Binding bindingPush() {
|
return BindingBuilder.bind(directQueue()).to(directExchange()).with("PUSH_ROUTING");
|
}
|
|
|
|
@Bean
|
DirectExchange lonelyDirectExchange() {
|
return new DirectExchange("lonelyDirectExchange");
|
}
|
|
@Bean
|
public MessageConverter messageConverter(){
|
return new Jackson2JsonMessageConverter();
|
}
|
|
|
}
|