互联网的时代,喜欢她就关注她,然后我们就能收到她的动态。你想知道这是什么原理,怎么实现的吗?JMS订阅与发布功能就能揭开这层神秘的面纱,一起看看吧……
每一个消息可以有多个消费者。
向某个话题订阅的客户程序只能收到那些在它订阅之后发布的消息。为了接收到消息, 订阅者必须保持活动状态。因此,发布者和订阅者之间存在时间上的依赖关系。JMS API在一定程度上放宽了对这种依赖关系的要求,允许创建持久性订阅(Durable Subscription)。有了持久性订阅,当订阅者不活动时发送的消息也能接收到。
下面的实例是非持久性订阅:
① Commons.java 公有类
② TopicProducer.java 主题发布类
package com.lession.day1024.topic;import java.util.Date;import javax.jms.Session;import javax.jms.TextMessage;import javax.jms.Topic;import javax.jms.TopicConnection;import javax.jms.TopicConnectionFactory;import javax.jms.TopicPublisher;import javax.jms.TopicSession;import javax.naming.Context;import com.lession.day1024.Commons;public class TopicProducer{private TextMessage msg;private TopicPublisher producer;//private MessageProducer producer;public TopicProducer() throws Exception{this("topic");}public TopicProducer(String jndiName)throws Exception{Context context = Commons.getInitialContext();TopicConnectionFactory factory = (TopicConnectionFactory) context.lookup(Commons.TOPICCONNECTION_FACTORY_JNDI);TopicConnection connection = factory.createTopicConnection();connection.start();//创建一个TopicTopic topic = (Topic) context.lookup("topic");TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);producer = session.createPublisher(topic);//producer = session.createProducer(topic);msg = session.createTextMessage();}public void sendMessage(String str)throws Exception{msg.setText(str);producer.send(msg);}public static void main(String[] args){try{TopicProducer topic = new TopicProducer("topic");for (int i = 0; i < 3; i++){topic.sendMessage("Hello Topic" + i +