spring 3.2.2.RELEASE
activemq 5.14.0
jdk1.7
添加引用jar包,通过maven添加:
TopicSender.java:import java.io.Serializable;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.Session;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;import org.springframework.stereotype.Component;/** * @description Topic生产者发送消息到Topic */@Component('topicSender')public class TopicSender { @Autowired @Qualifier('jmsTopicTemplate') private JmsTemplate jmsTemplate; /** * 发送一条消息到指定的队列(目标) * @param queueName 队列名称 * @param message 消息内容 */ public void send(String topicName,final Serializable message){ jmsTemplate.send(topicName, new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { return session.createObjectMessage(message); } }); }}
发送消息到主题: @Resource TopicSender topicSender; /** * 发送消息到主题,放入一个消息,所有订阅者都会收到 */ public void topicsender(String message){ topicSender.send('topicname', message); }
接收主题消息TopicReceiver.javaimport javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;import org.springframework.stereotype.Component;@Componentpublic class TopicReceiver implements MessageListener{ @Override public void onMessage(Message message) { System.out.println('接收到消息:'+((TextMessage)message).getText()); } }
spring需要引入spring-jms,版本随spring版本