package com.yeshi.buwan.util.mq.rabbit;
|
|
import org.springframework.amqp.core.*;
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
import javax.annotation.Resource;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* @author hxh
|
* @title: RabbitmqConfig
|
* @description: TODO
|
* @date 2024/10/12 11:10
|
*/
|
@Configuration
|
//@EnableRabbit
|
public class RabbitmqConfig {
|
|
@Resource
|
private RabbitTemplate rabbitTemplate;
|
|
private Queue createQueue(String queueName){
|
Map<String, Object> headers=new HashMap<>();
|
headers.put("x-message-ttl", 24*60*60*1000);
|
return new Queue(queueName,true, false, false, headers);
|
}
|
|
@Bean("pluginDelayExchange")
|
public CustomExchange pluginDelayExchange() {
|
Map<String, Object> argMap = new HashMap<>();
|
argMap.put("x-delayed-type", "direct");//必须要配置这个类型,可以是direct,topic和fanout
|
//第二个参数必须为x-delayed-message
|
return new CustomExchange(RabbitmqSenderUtil.DELAY_EXCHANGE_NAME, "x-delayed-message", false, false, argMap);
|
}
|
|
|
@Bean("pluginDelayQueue")
|
public Queue pluginDelayQueue() {
|
return createQueue(RabbitmqSenderUtil.DELAY_QUEUE_NAME);
|
}
|
|
@Bean("pluginDelayConsumeFailQueue")
|
public Queue pluginDelayConsumeFailQueue() {
|
return createQueue(RabbitmqSenderUtil.CONSUME_FAIL_QUEUE_NAME);
|
}
|
|
@Bean
|
public Binding pluginDelayBinding(@Qualifier("pluginDelayQueue") Queue queue, @Qualifier("pluginDelayExchange") CustomExchange customExchange) {
|
return BindingBuilder.bind(queue).to(customExchange).with(RabbitmqSenderUtil.ROUTING_KEY_COMMON_DELAY).noargs();
|
}
|
|
@Bean
|
public Binding pluginDelayConsumeFailBinding(@Qualifier("pluginDelayConsumeFailQueue") Queue queue, @Qualifier("pluginDelayExchange") CustomExchange customExchange) {
|
return BindingBuilder.bind(queue).to(customExchange).with(RabbitmqSenderUtil.ROUTING_KEY_CONSUME_FAIL_DELAY).noargs();
|
}
|
|
@Bean
|
public Queue solrQueue() {
|
return createQueue(RabbitmqManager.QUEUENAME_SOLR);
|
}
|
|
@Bean
|
public Queue updateVideoIqiyi2Queue() {
|
return createQueue(RabbitmqManager.QUEUENAME_VIDEO_UPDATE_IQIYI_2);
|
}
|
|
@Bean
|
public Queue updateVideoFuntv2Queue() {
|
return createQueue(RabbitmqManager.QUEUENAME_VIDEO_UPDATE_FUNTV_2);
|
}
|
|
@Bean
|
public Queue updateVideoPPTVQueue() {
|
return createQueue(RabbitmqManager.QUEUENAME_VIDEO_UPDATE_PPTV);
|
}
|
|
@Bean
|
public Queue videoResourceDeleteQueue() {
|
return createQueue(RabbitmqManager.QUEUENAME_VIDEO_RESOURCE_DELETE);
|
}
|
|
@Bean("updateVideoExtraInfoQueue")
|
public Queue updateVideoExtraInfoQueue() {
|
return createQueue(RabbitmqManager.QUEUENAME_UPDATE_VIDEO_EXTRAINFO);
|
}
|
|
@Bean
|
public Queue updateInternetSearchQueue() {
|
return createQueue(RabbitmqManager.QUEUENAME_UPDATE_INTERNET_SEARCH);
|
}
|
|
@Bean
|
public Queue updateResourceVideoQueue() {
|
return createQueue(RabbitmqManager.QUEUENAME_UPDATE_RESOURCE_VIDEO);
|
}
|
|
@Bean("videoSyncDataV2Queue")
|
public Queue videoSyncDataV2Queue() {
|
return createQueue(RabbitmqManager.QUEUENAME_VIDEO_SYNCDATA_V2);
|
}
|
|
@Bean("videoExtraInfoExchange")
|
public FanoutExchange videoExtraInfoExchange() {
|
Map<String, Object> headers=new HashMap<>();
|
headers.put("x-message-ttl", 24*60*60*1000);
|
return new FanoutExchange(RabbitmqManager.TOPIC_VIDEO_EXTRAINFO, true, false, headers);
|
}
|
|
@Bean
|
public Binding videoExtraInfoExchangeBinding(@Qualifier("updateVideoExtraInfoQueue") Queue queue, @Qualifier("videoExtraInfoExchange") FanoutExchange customExchange) {
|
return BindingBuilder.bind(queue).to(customExchange);
|
}
|
|
@Bean("videoInfoChangeExchange")
|
public FanoutExchange videoInfoChangeExchange() {
|
Map<String, Object> headers=new HashMap<>();
|
headers.put("x-message-ttl", 24*60*60*1000);
|
return new FanoutExchange(RabbitmqManager.TOPIC_VIDEO_INFO_CHANGE, true, false, headers);
|
}
|
|
@Bean
|
public Binding videoInfoChangeExchangeBinding(@Qualifier("videoSyncDataV2Queue") Queue queue, @Qualifier("videoInfoChangeExchange") FanoutExchange customExchange) {
|
return BindingBuilder.bind(queue).to(customExchange);
|
}
|
|
|
|
}
|