ActiveMQ入门之Pub/Sub(发布订阅)模式

1、编写消息的生产者

package com.wedu.mq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Producer {

	public static void main(String[] args) throws Exception {
		//创建连接工厂
		ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
		//创建连接
		Connection connection = factory.createConnection();
		//打开连接
		connection.start();
		//创建会话
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//创建主题
		Topic topic = session.createTopic("tx_topic");
		//创建消息的生产者
		MessageProducer producer = session.createProducer(topic);
		TextMessage message = session.createTextMessage("hello,Active");
		producer.send(message);
		producer.close();
		session.close();
		connection.close();		
	}
}

2、编写消息的消费者1

package com.wedu.mq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Consumer1 {
	public static void main(String[] args) throws Exception {
		//创建连接工厂
		ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
		//创建连接
		Connection connection = factory.createConnection();
		//持久订阅的时候需要一个id来标识
		connection.setClientID("tx_01");
		//打开连接
		connection.start();
		//创建会话
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//创建主题
		Topic topic = session.createTopic("tx_topic");
		//创建消息的消费者
		MessageConsumer consumer = session.createDurableSubscriber(topic, "tx_topic_01");
		//接收消息
		TextMessage message = (TextMessage) consumer.receive();
		System.out.println(message.getText()); 
		consumer.close();
		session.close();
		connection.close();				
	}
}

3、创建消息的消费者2

package com.wedu.mq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Consumer2 {
	public static void main(String[] args) throws Exception {
		//创建连接工厂
		ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
		//创建连接
		Connection connection = factory.createConnection();
		//持久订阅的时候需要一个id来标识
		connection.setClientID("tx_02");
		//打开连接
		connection.start();
		//创建会话
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//创建主题
		Topic topic = session.createTopic("tx_topic");
		//创建消息的消费者
		MessageConsumer consumer = session.createDurableSubscriber(topic, "tx_topic_02");
		//接收消息
		TextMessage message = (TextMessage) consumer.receive();
		System.out.println(message.getText()); 
		consumer.close();
		session.close();
		connection.close();				
	}
}

4、启动ActiveMQ服务,并切换到主题订阅页面

ActiveMQ入门之Pub/Sub(发布订阅)模式_第1张图片

5、运行消息消费者程序,刷新主题订阅页面,显示如下:

ActiveMQ入门之Pub/Sub(发布订阅)模式_第2张图片

6、运行消息生产者程序,控制台输出hello,Active,刷新主题订阅页面,显示如下:

ActiveMQ入门之Pub/Sub(发布订阅)模式_第3张图片

你可能感兴趣的:(MQ)