公司项目中需要与多个平台交互信息,采用activemq。与数据采集平台连接用的是一个activemq,与上级平台连接用的是另一个activemq,也就是要连接到上级平台的activemq。我们的项目是可以同时部署为上级平台或者下级平台,下级平台往上级平台发送报表的时候要发送到上级平台的activemq,下级平台接收数据采集器的数据的时候要发送任务信息到自身的activemq。自身的activemq按照正常的配置,不再细写,参考:https://www.cnblogs.com/jaycekon/p/ActiveMq.html
问题是现在要怎么再配置一个连接池到上级平台的activemq。我的做法是新建一个类,类名随便起了个,就叫ActiveMQFactory,在这个类里面有2个方法,一个获得缓存连接工厂,一个获得JmsTemplate。代码如下:
package com.infinova.oms.activemq;
import javax.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.jms.connection.CachingConnectionFactory;
import org.springframework.jms.core.JmsTemplate;
public class ActiveMQFactory {
String username;
String password;
String brokenUrl;
long receiveTimeout;
String destinationName;
boolean pubSubDomain;
private int sessionCacheSize;
private CachingConnectionFactory connection;
private JmsTemplate jmsTemplate;
public ConnectionFactory getConnection() {
if(connection == null) {
connection = new CachingConnectionFactory(new ActiveMQConnectionFactory(username,password,brokenUrl));
connection.setSessionCacheSize(sessionCacheSize);
}
return connection;
}
public JmsTemplate getJmsTemplate(){
if(jmsTemplate == null) {
jmsTemplate = new JmsTemplate(getConnection());
jmsTemplate.setReceiveTimeout(receiveTimeout);