Publish/Subscribe(发布/订阅模式):1对多
package org.jms.demo.publish_subscribe;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Publish {
private static final String brokeURL = "tcp://localhost:61616";
private ConnectionFactory connectionFactory;
private Connection connection;
private Destination destination;
private MessageProducer producer;
private Session session;
public Publish() throws JMSException {
connectionFactory = new ActiveMQConnectionFactory(brokeURL);
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic("topic");
producer = session.createProducer(destination);
}
public void publichMessage() throws JMSException {
TextMessage textMessage = this.session.createTextMessage("Topic Message");
this.producer.send(destination, textMessage);
}
public static void main(String[] args) throws JMSException {
Publish publish = new Publish();
publish.publichMessage();
}
}
订阅1:、
package org.jms.demo.publish_subscribe;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Subscribe1 {
private static final String brokeURL = "tcp://localhost:61616";
private ConnectionFactory connectionFactory;
private Connection connection;
private Destination destination;
private MessageConsumer consumer;
private Session session;
public Subscribe1() throws JMSException {
connectionFactory = new ActiveMQConnectionFactory(brokeURL);
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic("topic");
consumer = session.createConsumer(destination);
consumer.setMessageListener(new TopicListener());
}
final class TopicListener implements MessageListener {
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
System.out.println(((TextMessage) message).getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws JMSException {
Subscribe1 publish = new Subscribe1();
}
}
订阅2:
package org.jms.demo.publish_subscribe;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.jms.demo.publish_subscribe.Subscribe1.TopicListener;
public class Subscribe2 {
private static final String brokeURL = "tcp://localhost:61616";
private ConnectionFactory connectionFactory;
private Connection connection;
private Destination destination;
private MessageConsumer consumer;
private Session session;
public Subscribe2() throws JMSException {
connectionFactory = new ActiveMQConnectionFactory(brokeURL);
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic("topic");
consumer = session.createConsumer(destination);
consumer.setMessageListener(new TopicListener());
}
final class TopicListener implements MessageListener {
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
System.out.println(((TextMessage) message).getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws JMSException {
Subscribe2 publish = new Subscribe2();
}
}