Преглед на файлове

feat(rabbit):更新rabbit配置方法,改用注解配置方式

hejq преди 7 години
родител
ревизия
f1e4c545e5

+ 2 - 2
src/main/java/com/uas/platform/b2b/support/mq/RabbitSendService.java

@@ -32,8 +32,8 @@ public class RabbitSendService implements RabbitTemplate.ConfirmCallback, Rabbit
 //		如果消息到达exchange,则confirm回调,ack=true
 //		exchange到queue成功,则不回调return
 //		exchange到queue失败,则回调return(否则不回回调,消息就丢了)
-//		rabbitTemplate.setConfirmCallback(this);
-//		rabbitTemplate.setReturnCallback(this);
+		rabbitTemplate.setConfirmCallback(this);
+		rabbitTemplate.setReturnCallback(this);
 	}
 
 	/**

+ 51 - 0
src/main/java/com/uas/platform/b2b/support/mq/config/RabbitMqConfig.java

@@ -1,8 +1,14 @@
 package com.uas.platform.b2b.support.mq.config;
 
 import org.springframework.amqp.core.Queue;
+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.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;
 
 /**
  * RabbitMq配置
@@ -43,4 +49,49 @@ public class RabbitMqConfig {
         return new Queue(QUEUE_SAAS_PURCHASE_APCHECK_NAME, true);
     }
 
+    @Value("#{sys['spring.rabbitmq.host']}")
+    private String host;
+
+    @Value("#{sys['spring.rabbitmq.port']}")
+    private String port;
+
+    @Value("#{sys['spring.rabbitmq.username']}")
+    private String username;
+
+    @Value("#{sys['spring.rabbitmq.password']}")
+    private String password;
+
+    @Value("#{sys['spring.rabbitmq.publisher-confirms']}")
+    private Boolean publisherConfirms;
+
+    @Value("#{sys['spring.rabbitmq.virtual-host']}")
+    private String virtualHost;
+
+    /**
+     * 初始化连接设置
+     *
+     * @return ConnectionFactory
+     */
+    @Bean
+    public ConnectionFactory connectionFactory() {
+        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
+        connectionFactory.setAddresses(this.host);
+        connectionFactory.setUsername(this.username);
+        connectionFactory.setPassword(this.password);
+        connectionFactory.setVirtualHost(this.virtualHost);
+        connectionFactory.setPublisherConfirms(this.publisherConfirms);
+        return connectionFactory;
+    }
+
+    /**
+     * rabbitmq的模板配置
+     *
+     * 必须是prototype类型
+     * @return RabbitTemplate
+     */
+    @Bean
+    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+    public RabbitTemplate rabbitTemplate() {
+        return new RabbitTemplate(this.connectionFactory());
+    }
 }

+ 7 - 7
src/main/resources/dev/sys.properties

@@ -26,10 +26,10 @@ searchUrl=http://188.131.128.107:24005
 dfsFileUrl=http://10.10.100.200:9999
 
 #rabbmitmq 配置
-rabbitmq.virtual-host=b2b
-rabbitmq.host=rabbitmq.uuzcc.cn
-rabbitmq.port=5672
-rabbitmq.username=b2b_platform
-rabbitmq.password=platform8888
-rabbitmq.publisher-confirms=true
-rabbitmq.publisher-returns=true
+spring.rabbitmq.virtual-host=b2b
+spring.rabbitmq.host=rabbitmq.uuzcc.cn
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=b2b_platform
+spring.rabbitmq.password=platform8888
+spring.rabbitmq.publisher-confirms=true
+spring.rabbitmq.publisher-returns=true

+ 7 - 7
src/main/resources/ptest/sys.properties

@@ -26,10 +26,10 @@ searchUrl=http://192.168.100.15:8080
 dfsFileUrl=http://dfs-api.ubtob.com
 
 #rabbmitmq 配置
-rabbitmq.virtual-host=b2b
-rabbitmq.host=rabbitmq.uuzcc.cn
-rabbitmq.port=5672
-rabbitmq.username=b2b_platform
-rabbitmq.password=platform8888
-rabbitmq.publisher-confirms=true
-rabbitmq.publisher-returns=true
+spring.rabbitmq.virtual-host=b2b
+spring.rabbitmq.host=rabbitmq.uuzcc.cn
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=b2b_platform
+spring.rabbitmq.password=platform8888
+spring.rabbitmq.publisher-confirms=true
+spring.rabbitmq.publisher-returns=true

+ 0 - 2
src/main/resources/spring/context.xml

@@ -225,6 +225,4 @@
 		<property name="configPath" value="classpath:${profile}/account.properties" />
 	</bean>
 
-    <!--rabbit配置-->
-    <import resource="rabbitmq-producer.xml"/>
 </beans>

+ 0 - 56
src/main/resources/spring/rabbitmq-producer.xml

@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:rabbit="http://www.springframework.org/schema/rabbit"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
-       http://www.springframework.org/schema/rabbit
-       http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">
-
-    <!--配置connection-factory,指定连接rabbit server参数 -->
-    <bean id="rabbitConnectionFactory"
-          class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
-        <constructor-arg value="${rabbitmq.host}"/>
-        <property name="username" value="${rabbitmq.username}"/>
-        <property name="password" value="${rabbitmq.password}"/>
-        <!--<property name="channelCacheSize" value="${rabbit.channelCacheSize}"/>-->
-        <property name="port" value="${rabbitmq.port}"/>
-        <property name="virtualHost" value="${rabbitmq.virtual-host}"/>
-    </bean>
-    <rabbit:admin connection-factory="rabbitConnectionFactory"/>
-
-    <!-- autoDelete:是否自动删除 durable:持久化  -->
-    <rabbit:queue name="test_liam_queue" durable="true"/>
-    <!--<rabbit:queue name="${rabbit.queue}" durable="true"/>-->
-    <!-- topic主题 -->
-    <rabbit:topic-exchange name="test.liam.topic.exchange" xmlns="http://www.springframework.org/schema/rabbit" durable="true">
-        <bindings>
-            <binding queue="test_liam_queue" pattern="*.liam.queue" />
-        </bindings>
-    </rabbit:topic-exchange>
-    <!-- 绑定交换机和队列 -->
-   <!-- <rabbit:direct-exchange name="${rabbit.exchange}" xmlns="http://www.springframework.org/schema/rabbit" durable="true" >
-        <rabbit:bindings>
-            <rabbit:binding queue="${rabbit.queue}" key="${rabbit.routingKey}" />
-        </rabbit:bindings>
-    </rabbit:direct-exchange>-->
-
-    <!-- 创建rabbitTemplate 消息模板类 -->
-    <bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
-        <constructor-arg ref="rabbitConnectionFactory"/>
-        <!--消息确认回调 -->
-        <property name="confirmCallback" ref="producer"/>
-    </bean>
-
-    <bean name="producer" class="com.uas.platform.b2b.support.mq.RabbitSendService"/>
-
-    <bean id="messageContainer" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
-        <!--<property name="queues" ref="${rabbit.queue}"/>-->
-        <property name="exposeListenerChannel" value="true"/>
-        <property name="maxConcurrentConsumers" value="10"/>
-        <property name="concurrentConsumers" value="2"/>
-        <property name="connectionFactory" ref="rabbitConnectionFactory"/>
-        <property name="acknowledgeMode" value="MANUAL"/>
-    </bean>
-
-</beans>