activeMQ队列模式和主题模式的Java实现
2017-07-23 17:23
309 查看
一、队列模式
生产者
消费者
二、主题模式
生产者
消费者
三、activeMQ的maven依赖
生产者
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 AppProducer { public static final String url = "tcp://127.0.0.1:61616"; public static final String queueName = "queue-test"; public static void main(String[] args) throws JMSException{ //1. 创建ConnectionFactory ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url); //2. 创建Connection Connection connection = connectionFactory.createConnection(); //3. 启动链接 connection.start(); //4. 创建会话 Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE); //5. 创建一个目标 Destination destination = session.createQueue( queueName); //6. 创建一个生产者 MessageProducer producer = session.createProducer( destination); for( int i=0; i<100; i++){ //7. 创建消息 TextMessage textMessage = session.createTextMessage( "test" + i); //8. 发布消息 producer.send( textMessage); System.out.println( "发送消息" + textMessage.getText()); } //9. 关闭链接 connection.close(); } }
消费者
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.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class AppConsumer { public static final String url = "tcp://127.0.0.1:61616"; public static final String queueName = "queue-test"; public static void main(String[] args) throws JMSException{ //1. 创建ConnectionFactory ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url); //2. 创建Connection Connection connection = connectionFactory.createConnection(); //3. 启动链接 connection.start(); //4. 创建会话 Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE); //5. 创建一个目标 Destination destination = session.createQueue( queueName); //6. 创建一个消费者 MessageConsumer consumer = session.createConsumer( destination); //7. 创建一个监听器 consumer.setMessageListener( new MessageListener() { @Override public void onMessage(Message message) { TextMessage textMessage = ( TextMessage) message; try{ System.out.println( "0接收消息" + textMessage.getText()); }catch( JMSException e){ e.printStackTrace(); } } }); //8. 关闭链接 //connection.close(); } }
二、主题模式
生产者
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 AppProducer { public static final String url = "tcp://127.0.0.1:61616"; public static final String topicName = "topic-test"; public static void main(String[] args) throws JMSException{ //1. 创建ConnectionFactory ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url); //2. 创建Connection Connection connection = connectionFactory.createConnection(); //3. 启动链接 connection.start(); //4. 创建会话 Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE); //5. 创建一个目标 Destination destination = session.createTopic( topicName); //6. 创建一个生产者 MessageProducer producer = session.createProducer( destination); for( int i=0; i<100; i++){ //7. 创建消息 TextMessage textMessage = session.createTextMessage( "test" + i); //8. 发布消息 producer.send( textMessage); System.out.println( "发送消息" + textMessage.getText()); } //9. 关闭链接 connection.close(); } }
消费者
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.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class AppConsumer { public static final String url = "tcp://127.0.0.1:61616"; public static final String topicName = "topic-test"; public static void main(String[] args) throws JMSException{ //1. 创建ConnectionFactory ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url); //2. 创建Connection Connection connection = connectionFactory.createConnection(); //3. 启动链接 connection.start(); //4. 创建会话 Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE); //5. 创建一个目标 Destination destination = session.createTopic( topicName); //6. 创建一个消费者 MessageConsumer consumer = session.createConsumer( destination); //7. 创建一个监听器 consumer.setMessageListener( new MessageListener() { @Override public void onMessage(Message message) { TextMessage textMessage = ( TextMessage) message; try{ System.out.println( "0接收消息" + textMessage.getText()); }catch( JMSException e){ e.printStackTrace(); } } }); //8. 关闭链接 //connection.close(); } }
三、activeMQ的maven依赖
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.9.0</version> </dependency>
相关文章推荐
- 【Java消息中间件】Java消息中间件( 第4章 使用activemq - 队列模式、主题模式的消息演示 )
- Spring实现activemq(队列模式和主题模式)
- Activemq 消息发送、接收java代码实现队列模式
- Java消息中间件学习笔记四 -- ActiveMQ的使用,【队列模式】
- Java Jedis操作Redis示例(二)——list 生产者/消费者模式实现消息队列
- ActiveMQ消息中间件之队列模式和主题模式详解
- java线程实现简单 消息队列 1对1模式
- java通过ActiveMQ实现JMS的消息队列实例
- 消息队列MQ实践----实现Queue(队列消息)和Topic(主题消息)两种模式
- 【Java并发】生产者-消费者模式简单实现(模拟消息队列)
- Java ActiveMQ队列模式案例
- ActiveMQ消息中间件简明笔记(2)——队列模式和主题模式应用开发(JMS API)
- java消费者生产者模式及JDK之阻塞队列LinkedBlockingQueue实现
- ActiveMQ实战(六)--Spring整合ActiveMQ实现队列和主题发布订阅通信
- Java生产者-消费者模式的阻塞队列实现
- Java Jedis操作Redis示例(一)——pub/sub模式实现消息队列
- 基于Java阻塞队列实现生产者与消费者模式
- Java设计模式—生产者消费者模式(阻塞队列实现)
- Java ActiveMQ简介以及springboot集成activeMQ实现消息队列监听以及实现MQ延迟
- Java设计模式—生产者消费者模式(阻塞队列实现)