|
|
@@ -0,0 +1,155 @@
|
|
|
+package com.java110.order.mq;
|
|
|
+
|
|
|
+import org.apache.activemq.ActiveMQConnectionFactory;
|
|
|
+import org.apache.activemq.pool.PooledConnectionFactory;
|
|
|
+import org.apache.commons.lang.math.NumberUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.jms.core.JmsTemplate;
|
|
|
+
|
|
|
+import javax.jms.ConnectionFactory;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by wuxw on 2017/4/17.
|
|
|
+ */
|
|
|
+@ConfigurationProperties(prefix = "mq.queue.name",locations="classpath:mq/mq.properties")
|
|
|
+public class MqConfig {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ConnectionFactory mqConnectionFactory;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ PooledConnectionFactory pooledConnectionFactory;
|
|
|
+
|
|
|
+ @Value("user")
|
|
|
+ private String userQueueName;
|
|
|
+
|
|
|
+ @Value("deleteOrderQueue")
|
|
|
+ private String deleteOrderQueueName;
|
|
|
+ @Value("deleteOrderTopic")
|
|
|
+ private String deleteOrderTopicName;
|
|
|
+
|
|
|
+ private String brokerUrl;
|
|
|
+
|
|
|
+ private String username;
|
|
|
+
|
|
|
+ private String password;
|
|
|
+
|
|
|
+ private String maxConnection;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 默认最大链接数
|
|
|
+ */
|
|
|
+ private final static int DEFAULT_MAX_CONNECTION = 50;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * activemq 链接工厂
|
|
|
+ * 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Bean(name="mqConnectionFactory")
|
|
|
+ public ConnectionFactory mqConnectionFactory(){
|
|
|
+ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
|
|
|
+ connectionFactory.setBrokerURL(brokerUrl);
|
|
|
+ connectionFactory.setUserName(username);
|
|
|
+ connectionFactory.setPassword(password);
|
|
|
+ return connectionFactory;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 池链接
|
|
|
+ * ActiveMQ为我们提供了一个PooledConnectionFactory,通过往里面注入一个ActiveMQConnectionFactory
|
|
|
+ 可以用来将Connection、Session和MessageProducer池化,这样可以大大的减少我们的资源消耗。 要依赖于 activemq-pool包
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Bean(name="pooledConnectionFactory")
|
|
|
+ public PooledConnectionFactory pooledConnectionFactory(){
|
|
|
+
|
|
|
+ PooledConnectionFactory connectionFactory = new PooledConnectionFactory();
|
|
|
+ connectionFactory.setConnectionFactory(mqConnectionFactory);
|
|
|
+ connectionFactory.setMaxConnections(NumberUtils.isNumber(maxConnection)?NumberUtils.toInt(maxConnection):DEFAULT_MAX_CONNECTION);
|
|
|
+ return connectionFactory;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean(name="deleteOrderQueueJmsTemplate")
|
|
|
+ public JmsTemplate deleteOrderQueueJmsTemplate(){
|
|
|
+ JmsTemplate jmsTemplate = new JmsTemplate();
|
|
|
+ jmsTemplate.setConnectionFactory(pooledConnectionFactory);
|
|
|
+ jmsTemplate.setDefaultDestinationName(deleteOrderQueueName);
|
|
|
+ return jmsTemplate;
|
|
|
+ }
|
|
|
+ public String getUserQueueName() {
|
|
|
+ return userQueueName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setUserQueueName(String userQueueName) {
|
|
|
+ this.userQueueName = userQueueName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getDeleteOrderQueueName() {
|
|
|
+ return deleteOrderQueueName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setDeleteOrderQueueName(String deleteOrderQueueName) {
|
|
|
+ this.deleteOrderQueueName = deleteOrderQueueName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getDeleteOrderTopicName() {
|
|
|
+ return deleteOrderTopicName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setDeleteOrderTopicName(String deleteOrderTopicName) {
|
|
|
+ this.deleteOrderTopicName = deleteOrderTopicName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getUsername() {
|
|
|
+ return username;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setUsername(String username) {
|
|
|
+ this.username = username;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPassword() {
|
|
|
+ return password;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPassword(String password) {
|
|
|
+ this.password = password;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getBrokerUrl() {
|
|
|
+ return brokerUrl;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setBrokerUrl(String brokerUrl) {
|
|
|
+ this.brokerUrl = brokerUrl;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ConnectionFactory getMqConnectionFactory() {
|
|
|
+ return mqConnectionFactory;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMqConnectionFactory(ConnectionFactory mqConnectionFactory) {
|
|
|
+ this.mqConnectionFactory = mqConnectionFactory;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getMaxConnection() {
|
|
|
+ return maxConnection;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMaxConnection(String maxConnection) {
|
|
|
+ this.maxConnection = maxConnection;
|
|
|
+ }
|
|
|
+
|
|
|
+ public PooledConnectionFactory getPooledConnectionFactory() {
|
|
|
+ return pooledConnectionFactory;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPooledConnectionFactory(PooledConnectionFactory pooledConnectionFactory) {
|
|
|
+ this.pooledConnectionFactory = pooledConnectionFactory;
|
|
|
+ }
|
|
|
+}
|