package cc.mrbird.febs.common.configure;
|
|
import cc.mrbird.febs.rabbit.constants.ExchangeConstants;
|
import cc.mrbird.febs.rabbit.constants.QueueConstants;
|
import cc.mrbird.febs.rabbit.constants.RouteKeyConstants;
|
import cc.mrbird.febs.rabbit.enumerates.RabbitQueueEnum;
|
import org.springframework.amqp.core.*;
|
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Scope;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
|
/**
|
* @author wzy
|
* @date 2021-09-25
|
**/
|
@Configuration
|
public class RabbitConfigure {
|
|
@Resource
|
private ConnectionFactory connectionFactory;
|
|
@Bean
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
public RabbitTemplate rabbitTemplate() {
|
return new RabbitTemplate(connectionFactory);
|
}
|
|
|
// === 延时 start ===
|
@Bean
|
public DirectExchange delayExchangeTtl() {
|
return new DirectExchange(RabbitQueueEnum.CHOU_JIANG_TIME_TTL.getExchange());
|
}
|
@Bean
|
public Binding orderDelayBindTtl() {
|
return BindingBuilder.bind(orderDelayQueueTtl()).to(delayExchangeTtl()).with(RabbitQueueEnum.CHOU_JIANG_TIME_TTL.getRoute());
|
}
|
@Bean
|
public Queue orderDelayQueueTtl() {
|
return QueueBuilder.durable(RabbitQueueEnum.CHOU_JIANG_TIME_TTL.getQueue())
|
//到期后转发的交换机
|
.withArgument("x-dead-letter-exchange", RabbitQueueEnum.CHOU_JIANG_TIME.getExchange())
|
//到期后转发的路由键
|
.withArgument("x-dead-letter-routing-key", RabbitQueueEnum.CHOU_JIANG_TIME.getRoute())
|
.build();
|
}
|
@Bean
|
public DirectExchange orderDelayExchange() {
|
return new DirectExchange(RabbitQueueEnum.CHOU_JIANG_TIME.getExchange());
|
}
|
@Bean
|
public Queue orderDelayQueue() {
|
return new Queue(RabbitQueueEnum.CHOU_JIANG_TIME.getQueue());
|
}
|
@Bean
|
public Binding orderDelayBind() {
|
return BindingBuilder.bind(orderDelayQueue()).to(orderDelayExchange()).with(RabbitQueueEnum.CHOU_JIANG_TIME.getRoute());
|
}
|
// === 延时 end ===
|
|
|
// === 延时 start ===
|
@Bean
|
public DirectExchange delayExchangeTtlNoTime() {
|
return new DirectExchange(RabbitQueueEnum.NO_TIME_TTL.getExchange());
|
}
|
@Bean
|
public Binding orderDelayBindTtlNoTime() {
|
return BindingBuilder.bind(orderDelayQueueTtlNoTime())
|
.to(delayExchangeTtlNoTime())
|
.with(RabbitQueueEnum.NO_TIME_TTL.getRoute());
|
}
|
@Bean
|
public Queue orderDelayQueueTtlNoTime() {
|
return QueueBuilder.durable(RabbitQueueEnum.NO_TIME_TTL.getQueue())
|
//到期后转发的交换机
|
.withArgument("x-dead-letter-exchange", RabbitQueueEnum.NO_TIME.getExchange())
|
//到期后转发的路由键
|
.withArgument("x-dead-letter-routing-key", RabbitQueueEnum.NO_TIME.getRoute())
|
.build();
|
}
|
@Bean
|
public DirectExchange orderDelayExchangeNoTime() {
|
return new DirectExchange(RabbitQueueEnum.NO_TIME.getExchange());
|
}
|
@Bean
|
public Queue orderDelayQueueNoTime() {
|
return new Queue(RabbitQueueEnum.NO_TIME.getQueue());
|
}
|
@Bean
|
public Binding orderDelayBindNoTime() {
|
return BindingBuilder.bind(orderDelayQueueNoTime())
|
.to(orderDelayExchangeNoTime())
|
.with(RabbitQueueEnum.NO_TIME.getRoute());
|
}
|
// === 延时 end ===
|
|
|
|
// === 处理中奖 start ===
|
@Bean
|
public DirectExchange openPriceExchange() {
|
return new DirectExchange(RabbitQueueEnum.OPEN_PRICE.getExchange());
|
}
|
|
@Bean
|
public Queue openPriceQueue() {
|
return new Queue(RabbitQueueEnum.OPEN_PRICE.getQueue());
|
}
|
|
@Bean
|
public Binding openPriceBind() {
|
return BindingBuilder.bind(openPriceQueue()).to(openPriceExchange()).with(RabbitQueueEnum.OPEN_PRICE.getRoute());
|
}
|
// === 处理中奖 end ===
|
|
}
|