|
@@ -0,0 +1,166 @@
|
|
|
+package com.fdkankan.modeling.message;
|
|
|
+
|
|
|
+import com.fdkankan.base.mq.ModelingMsgProducer;
|
|
|
+import com.fdkankan.common.util.UploadToOssUtil;
|
|
|
+import com.fdkankan.scene.service.IRebuildVideoProgressService;
|
|
|
+import com.fdkankan.scene.service.ISceneFileBuildService;
|
|
|
+import com.fdkankan.scene.service.ISceneProEditService;
|
|
|
+import com.fdkankan.scene.service.ISceneProService;
|
|
|
+import lombok.extern.log4j.Log4j2;
|
|
|
+import org.springframework.amqp.core.Queue;
|
|
|
+import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
|
|
|
+import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
|
|
|
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
|
|
|
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+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;
|
|
|
+
|
|
|
+@Log4j2
|
|
|
+@Configuration
|
|
|
+public class RabbitConfig {
|
|
|
+
|
|
|
+ @Value("${spring.rabbitmq.host}")
|
|
|
+ private String host;
|
|
|
+
|
|
|
+ @Value("${spring.rabbitmq.port}")
|
|
|
+ private int port;
|
|
|
+
|
|
|
+ @Value("${spring.rabbitmq.username}")
|
|
|
+ private String username;
|
|
|
+
|
|
|
+ @Value("${spring.rabbitmq.password}")
|
|
|
+ private String password;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISceneProService sceneProService;
|
|
|
+ @Autowired
|
|
|
+ private ISceneFileBuildService sceneFileBuildService;
|
|
|
+ @Autowired
|
|
|
+ private UploadToOssUtil uploadToOssUtil;
|
|
|
+ @Autowired
|
|
|
+ private ISceneProEditService sceneProEditService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IRebuildVideoProgressService rebuildVideoProgressService;
|
|
|
+
|
|
|
+ @Value("${oss.type}")
|
|
|
+ private String ossType;
|
|
|
+
|
|
|
+ @Value("${prefix.ali}")
|
|
|
+ private String prefixAli;
|
|
|
+
|
|
|
+ @Value("${rabbitmq.queue}")
|
|
|
+ private String queue;
|
|
|
+
|
|
|
+ @Value("${main.url}")
|
|
|
+ private String mainUrl;
|
|
|
+
|
|
|
+ @Value("${scene.pro.new.url}")
|
|
|
+ private String sceneProNewUrl;
|
|
|
+
|
|
|
+
|
|
|
+// public static final String QUEUE_MODELING_A = "QUEUE_MODELING_A";
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
|
|
|
+ SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
|
|
|
+ factory.setConnectionFactory(connectionFactory());
|
|
|
+ factory.setPrefetchCount(1);
|
|
|
+ return factory;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public ConnectionFactory connectionFactory() {
|
|
|
+ CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host,port);
|
|
|
+ connectionFactory.setUsername(username);
|
|
|
+ connectionFactory.setPassword(password);
|
|
|
+ connectionFactory.setVirtualHost("/");
|
|
|
+ connectionFactory.setPublisherConfirms(true);
|
|
|
+ return connectionFactory;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
|
|
+ public RabbitTemplate rabbitTemplate() {
|
|
|
+ return new RabbitTemplate(connectionFactory());
|
|
|
+ }
|
|
|
+
|
|
|
+ /*public static final String EXCHANGE_MODELING = "MQ_EXCHANGE_MODELING";
|
|
|
+
|
|
|
+ public static final String QUEUE_MODELING_B = "QUEUE_MODELING_B";
|
|
|
+ public static final String ROUTINGKEY_MODELING_A = "ROUTINGKEY_MODELING_A";
|
|
|
+ public static final String ROUTINGKEY_MODELING_B = "ROUTINGKEY_MODELING_B";
|
|
|
+
|
|
|
+
|
|
|
+ *//**
|
|
|
+ * 针对消费者配置
|
|
|
+ * 1. 设置交换机类型
|
|
|
+ * 2. 将队列绑定到交换机
|
|
|
+ FanoutExchange: 将消息分发到所有的绑定队列,无routingkey的概念
|
|
|
+ HeadersExchange :通过添加属性key-value匹配
|
|
|
+ DirectExchange:按照routingkey分发到指定队列
|
|
|
+ TopicExchange:多关键字匹配
|
|
|
+ *//*
|
|
|
+ @Bean
|
|
|
+ public DirectExchange defaultExchange() {
|
|
|
+ return new DirectExchange(EXCHANGE_MODELING);
|
|
|
+ }
|
|
|
+
|
|
|
+ *//**
|
|
|
+ * 获取队列A
|
|
|
+ * @return
|
|
|
+ *//*
|
|
|
+ @Bean
|
|
|
+ public Queue modelingQueueA() {
|
|
|
+ return new Queue(QUEUE_MODELING_A, true); //队列持久
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public Binding binding() {
|
|
|
+ return BindingBuilder.bind(modelingQueueA()).to(defaultExchange()).with(ROUTINGKEY_MODELING_A);
|
|
|
+ }*/
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public Queue workQueue() {
|
|
|
+ return new Queue(queue);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public ReBuildVideoSceneReceiver reBuildVideoSceneReceiver() {
|
|
|
+ return new ReBuildVideoSceneReceiver("Receiver2", sceneProService,
|
|
|
+ uploadToOssUtil, rebuildVideoProgressService,sceneProEditService);
|
|
|
+ }
|
|
|
+
|
|
|
+// @Bean
|
|
|
+// public BuildSceneReceiver buildSceneReceiver2() {
|
|
|
+// return new BuildSceneReceiver("Receiver2", sceneService, sceneProService, smsService, userService, sceneFileBuildService, uploadToOssUtil);
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Bean
|
|
|
+// public BuildSceneReceiver buildSceneReceiver3() {
|
|
|
+// return new BuildSceneReceiver("Receiver3", sceneService, sceneProService, smsService, userService, sceneFileBuildService);
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Bean
|
|
|
+// public BuildSceneReceiver buildSceneReceiver4() {
|
|
|
+// return new BuildSceneReceiver("Receiver4", sceneService, sceneProService, smsService, userService, sceneFileBuildService);
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Bean
|
|
|
+// public BuildSceneReceiver buildSceneReceiver5() {
|
|
|
+// return new BuildSceneReceiver("Receiver5", sceneService, sceneProService, smsService, userService, sceneFileBuildService);
|
|
|
+// }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public ModelingMsgProducer modelingMsgProducer() {
|
|
|
+ return new ModelingMsgProducer(rabbitTemplate());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|