第一个JMS(Java Service Message)实例
来源:互联网 发布:安卓网络机顶盒论坛 编辑:程序博客网 时间:2024/06/04 08:24
JMS相关的概念这里就不在赘述,已经有很多前辈写了很多,这里直接上可运行的代码,先跑起来再说。
JMS的两种模式以及各自的特点:主题模式和队列模式
队列模式特点:
客户端包括生产者和消费者
队列中的消息只能被一个消费者消费
消费者可以随时消费队列里面的消息,不需要先预定消息
主题模式:(先运行订阅者再运行消费者,不然接受不到消息)
客户端包括生产者和消费者
主题中的消息被所有的消息消费
消费者需要预先订阅主题,消费者不能消费订阅之前的消息
环境:JDK1.8+ActiveMQ5.15
Maven依赖:
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.0</version> </dependency>
队列模式:
package net.imwork.jms.queue;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;/** * Created by Jason. * Date 2017/7/28 16:45 * 生产者 */public class Producer { public static void main(String[] args) throws JMSException { //消息目的地 String destinationurl = "tcp://localhost:61616"; //队列的名称 String QueueName = "demoQueueName"; //创建连接工厂,通过连接工厂创建连接 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(destinationurl); Connection connection = connectionFactory.createConnection(); //启动连接 connection.start(); //创建会话: /** * 1、通过会话创建队列对象 * 2、通过会话创建生成者对象 * 3、通过会话创建消息对象 */ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建目标,创建时设置队列名称 Destination destination = session.createQueue(QueueName);//Queue继承自Destionation //根据队列对象创建生产者 MessageProducer producer = session.createProducer(destination); //创建消息对象,可以创建多种类型的消息对象,这里是文件消息对象 for (int i = 0; i < 100; i++) { TextMessage textMessage = session.createTextMessage("Hello JMS -- Queue-->"+i); //发送消息 System.out.println("发送消息:"+textMessage.getText()); producer.send(textMessage); } //关闭连接 connection.close(); }}
package net.imwork.jms.queue;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;/** * Created by Jason. * Date 2017/7/28 16:46 * 消费者 */public class Comsumer { public static void main(String[] args) throws JMSException { //消息目的地 String destinationurl = "tcp://localhost:61616"; //队列的名称 String QueueName = "demoQueueName"; //创建连接工厂,通过连接工厂创建连接 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(destinationurl); Connection connection = connectionFactory.createConnection(); //打开连接 connection.start(); //创建会话: /** * 1、通过会话创建队列对象 * 2、通过会话创建生成者对象 * 3、通过会话创建消息对象 */ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建队列对象,创建时设置队列名称 Queue queue = session.createQueue(QueueName);//Queue继承自Destionation //根据队列对象创建消费者 MessageConsumer consumer = session.createConsumer(queue); //接受消息// for (int i = 0; i < 100; i++) {// TextMessage message = (TextMessage) consumer.receive();// System.out.println("接受到消息:"+message.getText());// } //设置监听器 consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { TextMessage textMessage = (TextMessage)message; try { System.out.println("接受到消息:"+textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } }); //关闭连接(关闭连接之后接收不到消息)// connection.close(); }}
主题模式:
package net.imwork.jms.topic;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;/** * Created by Jason. * Date 2017/7/28 16:45 * 生产者 */public class Producer { public static void main(String[] args) throws JMSException { //消息目的地 String destinationurl = "tcp://localhost:61616"; //队列的名称 String TopicName = "demoTopicName"; //创建连接工厂,通过连接工厂创建连接 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(destinationurl); Connection connection = connectionFactory.createConnection(); //启动连接 connection.start(); //创建会话: /** * 1、通过会话创建队列对象 * 2、通过会话创建生成者对象 * 3、通过会话创建消息对象 */ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建队列对象,创建时设置队列名称 Topic topic = session.createTopic(TopicName);//Queue继承自Destionation //根据队列对象创建生产者 MessageProducer producer = session.createProducer(topic); //创建消息对象,可以创建多种类型的消息对象,这里是文件消息对象 for (int i = 0; i < 100; i++) { TextMessage textMessage = session.createTextMessage("Hello JMS -- Topic-->" + i); //发送消息 System.out.println("发送消息:"+textMessage.getText()); producer.send(textMessage); } //关闭连接 connection.close(); }}
package net.imwork.jms.topic;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;/** * Created by Jason. * Date 2017/7/28 16:46 * 消费者 */public class Comsumer { public static void main(String[] args) throws JMSException { //消息目的地 String destinationurl = "tcp://localhost:61616"; //队列的名称 String TopicName = "demoTopicName"; //创建连接工厂,通过连接工厂创建连接 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(destinationurl); Connection connection = connectionFactory.createConnection(); //启动连接 connection.start(); //创建会话: /** * 1、通过会话创建队列对象 * 2、通过会话创建生成者对象 * 3、通过会话创建消息对象 */ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建队列对象,创建时设置队列名称 Topic topic = session.createTopic(TopicName);//Topic继承自Destionation //根据队列对象创建消费者 MessageConsumer consumer = session.createConsumer(topic); //接受消息 connection.start(); for (int i = 0; i < 100; i++) { TextMessage message = (TextMessage) consumer.receive(); System.out.println("接受到消息:"+message.getText()); } //关闭连接// connection.close(); }}
阅读全文
1 0
- 第一个JMS(Java Service Message)实例
- Java Message Service (JMS)
- JMS ---Java message service例子
- 认识JMS(JAVA Message Service)
- JMS(java message service)java消息服务
- JMS概要(Java Message Service Overview)
- JMS(Java Message Service)概念归纳
- JMS(Java Message Service)概念归纳
- Spring 消息JMS(Java Message Service)
- JMS(Java Message Service)的基本概念
- JMS : Java Message Service (Java消息服务)
- JMS : Java Message Service (Java消息服务)
- JMS : Java Message Service (Java消息服务)
- JMS : Java Message Service (Java消息服务)
- JMS : Java Message Service (Java消息服务)
- Java消息服务(Java Message Service,JMS)
- JMS : Java Message Service (Java消息服务)
- EJB---->JMS(Java Message Service)和消息驱动bean
- lua和java的相互调用
- IBM服务器配置raid 5
- .net Core 2.0使用NLog
- 重装win7系统
- CSU
- 第一个JMS(Java Service Message)实例
- ext省市县级联下拉
- CUDA Samples: Calculate Histogram(atomicAdd)
- MFC如何实现全屏效果
- 【RabbitMQ】——5种队列
- Linux查看程序端口占用情况
- STL map
- 中文版3ds Max 2012完全自学教程pdf
- 用C#来调用cmd命令程序,实现wifi控制的工具