spring整合activemq
整合spring和activemq需要搞清楚如下的东东
1、ConnectionFactory分:
a、spring管理连接到activemq服务器的管理ConnectionFactory也即是所谓产生到jms服务器的链接
b、真正产生到JMS服务器链接的ConnectionFactory还得是由JMS服务厂商提供,并且需要把它注入到Spring提 供的ConnectionFactory中
2、生产者 生产者负责产生消息并发送到JMS服务器,这通常对应的是我们的一个业务逻辑服务实现类,通常是 利用Spring为我们提供的JmsTemplate类来实现的
3、消费者 消息的接受者;一般包括[size=14px;]处理消息的[/size]MessageListener、消息监听容器MessageListenerContainer、发送消息到指定目的地Destination之类
4、消息类型:点对点、发布订阅
具体详情可以参考该地址:http://haohaoxuexi.iteye.com/blog/1893038
想实现代码如下:
一、业务服务接口
[code="java"]package com.jms.service;
import javax.jms.Destination;
public interface ProducerService {
public void sendMessage(Destination destination, final String message);
}
二、业务服务接口实现类
[code="java"]package com.jms.service;
import javax.annotation.Resource;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
@Component
public class ProducerServiceImpl implements ProducerService {
private JmsTemplate jmsTemplate;
public void sendMessage(Destination destination, final String message) {
System.out.println("---------------生产者发送消息-----------------");
System.out.println("---------------生产者发了一个消息:" + message);
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
@Resource
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
}
三、消息处理接口
[code="java"]package com.jms.service;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class ConsumerMessageListener implements MessageListener {
public void onMessage(Message message) {
//这里我们知道生产者发送的就是一个纯文本消息,所以这里可以直接进行强制转换
TextMessage textMsg = (TextMessage) message;
System.out.println("接收到一个纯文本消息。");
try {
System.out.println("消息内容是:" + textMsg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
四、测试单元
[code="java"]package com.jms.service;
import javax.jms.Destination;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/jms-messages.xml")
public class ProducerConsumerTest {
@Autowired
private ProducerService producerService;
@Autowired
@Qualifier("queueDestination")
private Destination destination;
@Test
public void testSend() {
for (int i=0; i
queue
六、需要下载activemq服务器并配置好,最终开启activemq服务器 http://activemq.apache.org/activemq-5111-release.html (如若未开启activemq服务可能会到导致只出现一对 消息发送 接收)
七、对应的项目jar详见附件,任意建一个web项目即可
如上基本实现spring 整合 jms (activemq)