关于其他的配置就不做介绍了,这里主要介绍Spring与ActiveMQ整合部分的配置
在ApplicationConfig.java中添加如下代码:
//配置ConnectionFactory
@Bean
public ConnectionFactory connectionFactory() {
ActiveMQConnectionFactory mqConnectionFactory = new ActiveMQConnectionFactory();
mqConnectionFactory.setBrokerURL("tcp://localhost:6166");//mq的服务器地址
mqConnectionFactory.setUserName("admin");//用户名
mqConnectionFactory.setPassword("admin");//密码
return mqConnectionFactory;
}
//配置消息队列Queue
@Bean
public Destination queueDestination() {
ActiveMQQueue activeMQQueue = new ActiveMQQueue();
activeMQQueue.setPhysicalName("queue1");
return activeMQQueue;
}
//发送消息配置
//配置JmsTemplate
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(connectionFactory());
jmsTemplate.setDefaultDestination(queueDestination());
jmsTemplate.setReceiveTimeout(10000);
return jmsTemplate;
}
@Bean
public Destination queueDestination2() {
ActiveMQQueue activeMQQueue = new ActiveMQQueue();
activeMQQueue.setPhysicalName("queue2");
return activeMQQueue;
}
@Bean
public QueueMessageListener queueMessageListener() {
QueueMessageListener queueMessageListener = new QueueMessageListener();
return queueMessageListener;
}
@Bean
public DefaultMessageListenerContainer jmsContainer() {
DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer();
listenerContainer.setConnectionFactory(connectionFactory());
listenerContainer.setDestination(queueDestination());
listenerContainer.setMessageListener(queueMessageListener());
return listenerContainer;
}
@Bean
public ActiveMQTopic topicDestination() {
ActiveMQTopic activeMQTopic = new ActiveMQTopic();
activeMQTopic.setPhysicalName("publics_topic");
return activeMQTopic;
}
@Bean
public ActiveMQTopic dpt_topic() {
ActiveMQTopic activeMQTopic = new ActiveMQTopic();
activeMQTopic.setPhysicalName("PUBLICS.department_topic");
return activeMQTopic;
}
@Bean
public ActiveMQTopic job_topic() {
ActiveMQTopic activeMQTopic = new ActiveMQTopic();
activeMQTopic.setPhysicalName("PUBLICS.job_topic");
return activeMQTopic;
}
@Bean
public ActiveMQTopic pes_topic() {
ActiveMQTopic activeMQTopic = new ActiveMQTopic();
activeMQTopic.setPhysicalName("PUBLICS.person_topic");
return activeMQTopic;
}
@Bean
public JmsTemplate topicJmsTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(connectionFactory());
jmsTemplate.setDefaultDestination(topicDestination());
jmsTemplate.setPubSubDomain(true);
jmsTemplate.setReceiveTimeout(10000);
return jmsTemplate;
}
@Bean
public CachingConnectionFactory cachingConnectionFactory() {
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setTargetConnectionFactory(connectionFactory());
cachingConnectionFactory.setSessionCacheSize(100);
return cachingConnectionFactory;
}
@Bean
public JmsTemplate persistentTopicjmsTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(cachingConnectionFactory());
jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
jmsTemplate.setPubSubDomain(true);
return jmsTemplate;
}
使用方法:
1.引入topic
@Autowired
private TopicProvider topicProvider;
2.发送信息
public void mqService(Object o){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ObjectMapper mapper = new ObjectMapper();
try {
String message = df.format(new Date())+ mapper.writeValueAsString(o);
topicProvider.publish2(department_topic, message);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}