【Java.JMS】点对点通信——Queue
来源:互联网 发布:网络安全技术方案 编辑:程序博客网 时间:2024/05/16 07:16
单点传输——消息的对应的数据通道是队列Queue,消息生产者QueueSender和消息消费者QueueReceiver
javax.jms public interface QueueSender extends MessageProducerpublic interface QueueReceiver extends MessageConsumer
和Queue相关的接口还有:
javax.jmspublic interface QueueConnectionFactory extends ConnectionFactorypublic interface QueueConnection extends Connectionpublic interface QueueSession extends Session
( Session和Connection在使用之后需要关闭。
在消息接收前需要打开Connection,connection.start(); )
点对点通信的模型如下:
点对点JMS应用程序的编程模型如下:
实例:
我们通过Active MQ Admin Portlet手动去Send消息到Queue中,在代码中创建两个Consumer去异步接收这个消息。
消费者代码如下:
package com.gof.jms.test;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;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 QueueMessageApp {public static final String user = "system";public static final String password = "manager";public static final String url = "tcp://localhost:61616";public static final String queueName = "test_queue";public static final boolean transacted = false;public static final boolean persistent = false; public static void main(String[] args){ Connection connection = null; Session session = null; try{ // create the connection ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url); connection = connectionFactory.createConnection(); connection.start(); // create the session session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(queueName); // In this example, we will send the message through activemq admin portlet manually. // create the consumer1 MessageConsumer consumer1 = session.createConsumer(destination); consumer1.setMessageListener(new MessageListener() {public void onMessage(Message message) {// TODO Auto-generated method stubTextMessage recvMessage = (TextMessage)message;try{System.out.println("Receive message by the 1st Consumer: " + recvMessage.getText());}catch (JMSException e){e.printStackTrace();}}}); // create the consumer2 MessageConsumer consumer2 = session.createConsumer(destination); consumer2.setMessageListener(new MessageListener() {public void onMessage(Message message) {// TODO Auto-generated method stubTextMessage recvMessage = (TextMessage)message;try{System.out.println("Receive message by the 2nd Consumer: " + recvMessage.getText());}catch (JMSException e){e.printStackTrace();}}}); // To avoid the connection closed before the message listener received the message. Thread.sleep(5000000); }catch (Exception e){ e.printStackTrace(); }finally{ try{ // close session and connection if (session != null){ session.close(); } if (connection != null){ connection.close(); } }catch (Exception e){ e.printStackTrace(); } } }}
首先启动Active MQ,再启动上面的消费者程序。
在Active MQ Admin Porlet中手动发送Queue消息到目标Queue,
可以得到如下的程序输出:
可以看出每个消息直只被消费了一次,如果有多个消费者同时监听一个Queue的话,无法确定一个消息最终会被哪一个消费者消费。
1 0
- 【Java.JMS】点对点通信——Queue
- JMS之activeMQ--点对点通信
- MPI—点对点通信
- jms activeMQ消息点对点通信入门实例
- MPI通信——点对点通信
- JMS——使用ActiveMQ打造点对点聊天器
- MPI学习笔记——点对点通信
- JAVA实现点对点通信思路
- 【Java.JMS】发布/订阅通信——Topic
- JMS消息服务器(二)——点对点消息传送模型
- JMS消息服务器(二)——点对点消息传送模型
- JMS学习笔记(二)——Queue和Topic
- JMS中点对点消息
- jms 点对点模式实例
- JMS 点对点消息
- JMS之点对点模型
- 点对点通信
- 《Pro Spring》学习笔记之Spring+ActiveMQ实现Queue通信(点对点)
- thymeleaf例子
- HDU 2845 Beans
- IOS8系统下,APP开发的不同,及碰到的问题收集
- Maven配置本地库加载ojdbc14-10.2.0.4.0.jar文件
- Linux 静态库&动态库调用
- 【Java.JMS】点对点通信——Queue
- Android 3.0 r1中文API文档(103) —— InputMethodManager [输入法]
- android完全退出应用程序
- PHP格式化输出json数据
- 通过Web打启动本地应用程序(一)
- 数据结构之顺序栈
- 转载!!!linux学习 tar 详细安装
- iOS拨打电话(三种方法)
- Linux企业级开发技术(2)——epoll企业级开发之epoll接口