JMS之点对点模型
来源:互联网 发布:dpp软件 编辑:程序博客网 时间:2024/05/16 16:16
jms基本概念就不多说了,本文主要讲解点对点模型的实例。
注:点对点模型下,一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息。这里,生产者知道消费者的队列,并直接将消息发送到消费者的队列。这种模式被概括为:只有一个消费者将获得消息
生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态。每一个成功处理的消息都由接收者签收。
第一步:定义生产者:
/** * 消息生产者 * @author Administrator * */public class JMSProducer { private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名 private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码 private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址 private static final int SENDNUM=20; // 发送的消息数量 public static void main(String[] args) { ConnectionFactory connectionFactory; // 连接工厂 Connection connection = null; // 连接 Session session; // 会话 接受或者发送消息的线程 Destination destination; // 消息的目的地 MessageProducer messageProducer; // 消息生产者 // 实例化连接工厂 connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL); try { connection=connectionFactory.createConnection(); // 通过连接工厂获取连接 connection.start(); // 启动连接 session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 创建Session destination=session.createQueue("FirstQueue1"); // 创建消息队列 messageProducer=session.createProducer(destination); // 创建消息生产者 sendMessage(session, messageProducer); // 发送消息 session.commit(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ if(connection!=null){ try { connection.close(); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } /** * 发送消息 * @param session * @param messageProducer * @throws Exception */ public static void sendMessage(Session session,MessageProducer messageProducer)throws Exception{ for(int i=0;i<JMSProducer.SENDNUM;i++){ TextMessage message=session.createTextMessage("ActiveMQ 发送的消息"+i); System.out.println("发送消息:"+"ActiveMQ 发送的消息"+i); messageProducer.send(message); } }}
第二步:定义消费者
/** * 消息消费者 * @author Administrator * */public class JMSConsumer2 { private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名 private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码 private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址 public static void main(String[] args) { ConnectionFactory connectionFactory; // 连接工厂 Connection connection = null; // 连接 Session session; // 会话 接受或者发送消息的线程 Destination destination; // 消息的目的地 MessageConsumer messageConsumer; // 消息的消费者 // 实例化连接工厂 connectionFactory=new ActiveMQConnectionFactory(JMSConsumer2.USERNAME, JMSConsumer2.PASSWORD, JMSConsumer2.BROKEURL); try { connection=connectionFactory.createConnection(); // 通过连接工厂获取连接 connection.start(); // 启动连接 session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session destination=session.createQueue("FirstQueue1"); // 创建连接的消息队列 messageConsumer=session.createConsumer(destination); // 创建消息消费者 messageConsumer.setMessageListener(new Listener()); // 注册消息监听 } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
第三步:注册监听,如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessage方法
/** * 消息监听 * @author Administrator * */public class Listener implements MessageListener{ @Override public void onMessage(Message message) { // TODO Auto-generated method stub try { System.out.println("收到的消息:"+((TextMessage)message).getText()); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
注意导入jar包:activemq-all-5.11.1.jar和开启服务(32位和64位)
结果:
阅读全文
0 0
- JMS之点对点模型
- JMS之activeMQ--点对点通信
- JMS(一)之点对点模式
- JMS入门(三)点对点消息传送模型示例
- 【J2EE】企业级项目开发总结--JMS点对点模型篇
- JMS中点对点消息
- jms 点对点模式实例
- JMS 点对点消息
- JMS之发布订阅模型
- JMS消息服务器(二)——点对点消息传送模型
- JMS消息服务器(二)——点对点消息传送模型
- JMS(点对点point-to-point)
- JMS点对点(P2P)模式示例
- Java技术回顾之JMS:JMS概念和模型
- 点对点的即时通讯模型
- opnet点对点通信模型
- 点对点消息传送模型
- ActiveMQ入门:点对点模型
- php interface
- imageloader
- 【Spring】AOP
- 程序员的自我修炼-尴尬的一天
- 暑期集训day1训练(图论1)
- JMS之点对点模型
- linux之入门---使用帮助命令解决问题
- JQuery常用方法
- tab切换功能——vue
- jQuery事件及文档处理
- [UVa11400]照明系统设计
- hdu 4309 状压+最大流
- 图片
- 本地网页样式上传服务器后发生变化解决办法