两个项目,一个生产者一个消费者,这里只贴出关键代码(队列模式和订阅模式),文章最后会附上项目地址,有需要的可以自行下载。项目访问地址
生产者
tcp://127.0.0.1:61616
queues.java
public class QueueSender { private Destination destination; private JmsTemplate jmsTemplate; public QueueSender(ActiveMQQueue queue) { this.destination = queue; } public void send(final String message) throws JMSException { jmsTemplate.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createTextMessage(message); } }); } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; }}
Test.java
/** * Servlet implementation class Test */public class Test extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger LOGGER=Logger.getLogger(Test.class); /** * Default constructor. */ public Test() { // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); JmsTemplate jmsTemplate=(JmsTemplate) ac1.getBean("jmsTemplate"); jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createTextMessage("send a message~!"); } }); jmsTemplate.send("callcenter",new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createTextMessage("send a message to callcenter~!"); } }); JmsTemplate topicjmsTemplate=(JmsTemplate) ac1.getBean("topicjmsTemplate"); topicjmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { TextMessage msg = session.createTextMessage(); msg.setStringProperty("phrCode", "C001"); msg.setText("Hello World!"); return msg; } }); }}
消费者项目
tcp://127.0.0.1:61616
QueueReceiverListener.java
public class QueueReceiverListener implements SessionAwareMessageListener { private static final Logger LOGGER = Logger.getLogger(QueueReceiverListener.class); public void onMessage(Message message, Session session) throws JMSException { TextMessage msg = (TextMessage) message; try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
SimpleJMSReceiver.java
public class SimpleJMSReceiver { public void receive(TextMessage message) throws JmsException, JMSException { System.out.println(message.getStringProperty("phrCode")); System.out.println(message.getText()); } }
pom.xml两个项目都是一样的
UTF-8 junit junit 4.10 test org.springframework spring-jms 3.1.0.RELEASE org.springframework spring-test 3.1.0.RELEASE javax.annotation jsr250-api 1.0 org.apache.activemq activemq-core 5.7.0 org.apache.activemq activemq-pool 5.9.0 org.springframework spring-core 3.1.1.RELEASE org.springframework spring-beans 3.1.1.RELEASE org.springframework spring-context 3.1.1.RELEASE log4j log4j 1.2.17 org.springframework spring-jdbc 3.1.1.RELEASE org.springframework spring-web 4.0.6.RELEASE
下面是输出信息:
17:18:39,725 INFO Test:45 - --------发送队列消息开始--------17:18:39,725 DEBUG DefaultListableBeanFactory:245 - Returning cached instance of singleton bean 'jmsTemplate'17:18:39,979 DEBUG JmsTemplate:464 - Executing callback on JMS Session: PooledSession { ActiveMQSess17:18:40,029 INFO QueueReceiverListener:16 - -------接收消息开始---------17:18:40,030 DEBUG QueueReceiverListener:20 - QueueReceiverListener接收到报文:send a message~!17:18:40,030 DEBUG QueueReceiverListener:22 - QueueReceiverListener接收到报文:send a message~!17:18:40,046 DEBUG JmsTemplate:567 - Sending created message: ActiveMQTextMessage {commandId = 0, re17:18:40,047 INFO Test:60 - -------发送队列消息结束---------17:18:40,047 INFO Test:61 - -------发送订阅消息开始---------17:18:40,047 DEBUG DefaultListableBeanFactory:245 - Returning cached instance of singleton bean 'topicjmsTemplate'17:18:40,057 DEBUG JmsTemplate:464 - Executing callback on JMS Session: PooledSession { ActiveMQSession {id=ID:shy-PC-55695-1440407919807-1:3:1,started=false} }17:18:40,058 DEBUG JmsTemplate:567 - Sending created message: ActiveMQTextMessage {commandId = 0, re17:18:40,059 INFO Test:73 - -------发送订阅消息结束---------17:18:40,061 DEBUG DefaultMessageListenerContainer:313 - Received message of type [class org.apache.C001Hello World!
项目下载地址:http://pan.baidu.com/s/1o6DvqrC