zoukankan      html  css  js  c++  java
  • 【学习】JMS通信模式

    1.关于JMS的点对点模式

    JMS的点对点模式下,多个消费者可以注册到同一个队列上,但是生产者的某个消息只能被一个消费者接收,在多个消费者间,生产者的消息被多个消费者循环接收,如当前有6个消息在队列中等待发送,而有三个消费者等待消息,那么这三个消费者获取的消息分别为:

    消费者1:消息1、消息4
    
    消费者2:消息2、消息5
    
    消费者3:消息3、消息6

    也就是消费者1、2、3分别是循环来接收消息的。JMS保证每次只能将消息发给下一个准备好的接受者。
    2.关于JMS的发布/订阅模式

    发布订阅模式的消息使用主题(topics)作为目标。发布者发送消息到主题,订阅者从主题接收消息。发送到主题的消息会自动发给所有的订阅者。这个消息传送领域就像预制一个邮件列表,所有邮件列表上的用户都会受到消息。图2.7描述了这种情况。



    就像PTP消息传送一样,订阅者可以通过MessageConsumer.receive()方法同步地接收消息或使用MessageConsumer.setMessageListener()方法注册一个MessageListener实现来异步地接收消息。主题并不保存消息,除非显式地让它这样做。这个可以通过使用持久订阅(durable subscription)来实现。使用持久订阅,如果一个订阅者与JMS提供者连接断开,JMS提供者有责任为该订阅者保存消息。重新连上后,订阅者将收到所有的未过期的消息。持久订阅允许订阅者断开连接而不会丢失任何消息。

    • 持久订阅----一个持久订阅的时间是无限的。客户端注册到主题上,并且告诉JMS提供者当订阅者断开连接时保持订阅状态。如果一个订阅者的连接断开了,JMS提供者将保持所有的消息直到订阅者重新连上或者订阅者取消订阅。
    • 非持久订阅----一个非持久订阅是有限的。客户端注册到主题上并且告诉JMS提供者当连接断开是不用保持订阅状态。如果一个订阅者断开连接,JMS提供者在断开的这段时间里不会保存任何消息。

    3.JMS应用的请求/回复传送机制

    QueueRequestor和TopicRequestor是两个处理请求/回复模式的有用的类。这些类提供一个request()方法发送一条请求消息并且通过临时目标等待回复。一般地,是一个请求预期会得到一个回复。图2.8显示了一个请求,一个回复的流程。

    图2.8通过两个终端描绘了基本的请求/回复消息传送类型。这个过程是使用了JMSReplyTo消息头部和一个临时目标。接收者通过临时目标发送回复消息,请求者则通过它接收消息。QueueRequestor和TopicRequestor这两个类可以用来处理基本的请求/回复模式,但不能用来处理复杂的情况,比如一个请求对应多个接收者的多个回复。这种需求要求你自己开发自定义的JMS客户端。

  • 相关阅读:
    asp.net 2.0-实现数据访问(1)
    跨平台跨服务器跨网站SSO(单点登录)方案的DEMO
    (翻译)Windows Communication Foundation (Workshop)-Part 2:在WCF中操作会话
    ipc的remoting
    忙活了半年的书已经交稿,年后就要出版
    一个ASP.NET2.0的小项目-BLOG
    (论坛答疑点滴)上传控件怎么修改样式?怎么设置readonly?
    【LoveCherry】上海.NET招聘!!!!!!!!!!!!!!!!!!!!!!!!!
    【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引
    Scott Mitchell 的ASP.NET 2.0数据教程之二十四:: 分页和排序报表数据
  • 原文地址:https://www.cnblogs.com/zhangxsh/p/3501746.html
Copyright © 2011-2022 走看看