关键代码,创建topic
Destination destination = session.createTopic("topic1");
发布者:
package com.sniper.jms.topic;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
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;
/**
* 发布者
* @author audaque
*
*/
public class Sender {
public static void main(String[] args) {
ConnectionFactory connectionFactory; // 连接工厂
Connection connection = null; // 连接
Session session = null;
try {
// 实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory("sniper", "sniper", "tcp://sniper0:61616");
connection = connectionFactory.createConnection(); // 通过连接工厂获取连接
connection.start(); // 启动连接
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session,没有事务
// 消息的目的地
Destination destination = session.createTopic("topic1");
// 创建消息生产者
MessageProducer messageProducer = session.createProducer(destination);
//设置消息不做持久化
messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 发送消息
for(int i=0; i<2; i++){
TextMessage message = session.createTextMessage("ActiveMQ 发送的消息"+i);
System.out.println("发送消息:"+"ActiveMQ 发送的消息"+i);
messageProducer.send(message);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
if(connection!=null){
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
订阅者1:
package com.sniper.jms.topic;
import java.util.concurrent.TimeUnit;
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;
/**
* 订阅者1
* @author audaque
*
*/
public class Receiver1 {
public static void main(String[] args) {
ConnectionFactory connectionFactory; // 连接工厂
Connection connection = null; // 连接
Session session = null;
try {
// 实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory("sniper", "sniper", "tcp://sniper0:61616");
connection = connectionFactory.createConnection(); // 通过连接工厂获取连接
connection.start(); // 启动连接
//自动签收,就是客户端接收到消息之后,会自动给服务端发送消息表示消息已经签收
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session
Destination destination = session.createTopic("topic1");
MessageConsumer messageConsumer = session.createConsumer(destination); // 创建消息消费者
messageConsumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if(message != null){
TextMessage textMessage = (TextMessage)message;
try {
System.err.println("收到的消息:" + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
try {
TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (JMSException e) {
e.printStackTrace();
} finally {
if(connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
订阅者2:
package com.sniper.jms.topic;
import java.util.concurrent.TimeUnit;
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;
/**
* 订阅者2
* @author audaque
*
*/
public class Receiver2 {
public static void main(String[] args) {
ConnectionFactory connectionFactory; // 连接工厂
Connection connection = null; // 连接
Session session = null;
try {
// 实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory("sniper", "sniper", "tcp://sniper0:61616");
connection = connectionFactory.createConnection(); // 通过连接工厂获取连接
connection.start(); // 启动连接
//自动签收,就是客户端接收到消息之后,会自动给服务端发送消息表示消息已经签收
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session
Destination destination = session.createTopic("topic1");
MessageConsumer messageConsumer = session.createConsumer(destination); // 创建消息消费者
messageConsumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if(message != null){
TextMessage textMessage = (TextMessage)message;
try {
System.err.println("Receiver2收到的消息:" + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
try {
TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (JMSException e) {
e.printStackTrace();
} finally {
if(connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}