在发布/订阅通讯中控制消息传递的制作方法

文档序号:6352125阅读:191来源:国知局
专利名称:在发布/订阅通讯中控制消息传递的制作方法
技术领域
本发明涉及一种在通讯系统中控制ー个或多个发布者应用和一个或多个订阅者应用之间的消息传递的方法、以及ー种适于控制这种传递的通讯系统。
背景技术
发布/订阅是公知的通讯(messaging)机制,通过该机制,订阅者应用能够以消息的形式从发布者应用(以下,简单称为“发布者”和“订阅者”)接收信息。在这种环境下,消息是用于应用程序之间进行交換的数据单位。典型的发布/订阅系统具有超过ー个发布者和超过ー个订阅者。
发布者和订阅者之间的交互全部由通用通讯系统的部件(诸如,队列管理器)或者由定制部件(称为消息代理)来控制。通讯系统是软件服务,应用可连接到该软件服务,并且队列是由通讯系统维护的消息的先进先出有序列表。应用可把消息放在队列上或者从队列中请求消息。实际上,队列管理器和代理之间的区别对于本发明而言并不重要。发布者提供关于题材(subject)的信息,而不需要知道关于对该信息感兴趣的应用的任何事情。发布者以他们想要发布的消息的形式产生这种信息(称为发布),并定义这些消息的主题(topic)。控制部件(队列管理器或代理)接收来自发布者的消息和识别ー个或多个主题的订阅者的订阅。它随后把发布的消息路由至已登记对这些主题感兴趣的订阅者。订阅者创建描述订阅者感兴趣的主题的订阅。因此,订阅确定哪些发布被转发给订阅者。订阅者能够进行多项订阅,并且能够从许多不同的发布者接收信息。订阅由管理员或订阅者应用自己登记,以把主题链接到指定订阅者应用的输入或目的地队列。当应用发布该主题的消息时,数据的拷贝将被放在具有对该主题的订阅的每个输入队列上。因此,一个主题可具有许多订阅,从而发布被传递到许多队列。正是主题的存在才通过消除如点到点通讯中要求的那样在每个消息中包括特定目的地的需要而允许信息的提供者和消费者在发布/订阅通讯中去耦。包括这种发布/订阅功能作为其队列管理器的一部分的ー种产品是IBMWebSphere MQ, Version 7,它是ー种通讯和排队中间件产品(“ IBM”和“ WebSphere”是International Business Machines Corporation在美国和/或其它国家的商标或注册■商标)。在这种和类似产品中,当发布者创建包含它希望发布的消息的信息时,它利用最适合该发布的题材的主题串来发布该信息。为了接收发布,订阅者创建具有与主题串匹配的模式的订阅以选择发布主題。队列管理器或代理随后把发布传递给具有与发布主题匹配的订阅并被授权接收所述发布的订阅者。也可以以管理方式创建订阅,从而处理队列的应用不需要知道它正在作为“订阅者”而工作。在基于题材的发布/订阅中,发布者或管理员负责把题材分类为主題。主题实现为描述应用可能希望交換消息的感兴趣领域的文本串,例如“股票价格”。典型地,在主题串中使用“/”字符创建子主题(例如“股票价格/最高点”),题材被以分级方式组织成主题树(还要注意的是,主题能够被暗示。因此,如果“股票价格/最高点”作为主题存在,则“股票价格”一定作为主题存在)。主题是主题树中的节点,主题树是通讯基础设施内使用的所有主题的总空间。主题在没有进ー步的子主题的情况下可以是叶子节点,或者在具有子主题的情况下可以是中间节点。订阅者创建的主题串也能够包含两种替代的通配符方案中的任ー种,以对发布中的主题串进行模式匹配。主题树由作为队列管理器或代理的一部分的主题管理器响应于进入的发布或订阅请求而维护并产生。主题树的节点是订阅主題/订阅者目的地对(或者当对于单个主题存在多个订阅者时为列表),主题管理器使用所述订阅主题/订阅者目的地对,按照主题匹配进入的发布与合适的订阅者目的地。树中的一个或多个主题节点可具有控制各方面(诸如,服务质量和安全设置)的关联的管理信息。在WebSphere MQ中,通过存在于主题树之外但參考分级体系中的给定级别的“主题对象”的定义来实现这一点。主题从在它们的主题树中找到的第一个父管理节 点继承它们的属性。订阅可具有两种类型持久和非持久。非持久订阅仅在订阅应用到队列管理器的连接保持开放时才存在。当订阅应用故意地或者因为失去连接而与队列管理器断开连接吋,该订阅被去除。当连接关闭时,关于订阅的信息被从队列管理器去除并且将不再可见。不再有消息将被放到订阅者队列。持久订阅在订阅应用到队列管理器的连接关闭时继续存在。如果订阅是持久的,则当订阅应用断开连接时,订阅保持在适当的位置并且能够在订阅应用重新连接时由订阅应用使用。这确保了 最终将会传递关于订阅者曾经订阅的主题的所有消息。发布也能够具有两种类型。默认地,在发布被发送给所有感兴趣的订阅者之后,它被丢弃。然而,发布者能够指定应该保留发布的拷贝,从而它能够被发送给将来的登记对该主题的兴趣的订阅者。在发布已被发送给所有感兴趣的订阅者之后删除发布适合于事件信息,但并不总是适合于状态信息。通过保留消息,新的订阅者不必在他们接收初始状态信息之前等待再次发布信息。例如,对股票价格进行了订阅的订阅者将会立刻接收当前价格,而不必等待股票价格改变(并因而重新发布)。队列管理器能够仅保留每个主题的ー项发布,因此当新的保留发布到达队列管理器时,删除主题的现有的保留发布。采用保留发布和持久订阅这两者的发布/订阅系统被用作由IBM公司开发的 WebSphere MQ 遥测传输(Telemetry Transport)协议的基础(“WebSphere” 是International Business Machines Corporation 的注册■商标),并在标题为“Methods andApparatus forRemote Monitoring”的公开号为WO 2007/063134的国际专利申请中被广泛地描述。这解释了 在远程分布式エ厂或装备的情况下,如何通过设置“确信(assured)”标记以使本地操作控制设备的订阅持久,从而即使在断开连接的时间段期间也可以为本地操作控制设备保留重要的监测信息。当诊断应用在故障后首次连接并订阅时,保留发布也有助于提供监测装备的最后已知状态或故障之前的数据值。

发明内容
持久订阅和保留发布这两种已知技术满足某些应用的功能要求,诸如以上讨论的遥测传输。然而,如果没有订阅者在当前登记,则它们不保证发布将会在稍后时间或日期被订阅者看见。至多,来自发布者的最后的发布可以被标记为保留,但更早的发布将会丢失。因此,在行业中需要这种保证传递系统。因此,本发明提供一种在通讯系统中控制ー个或多个发布者应用和ー个或多个订阅者应用之间的消息传递的方法,该系统包括主题管理器,利用主题管理器能够为订阅者应用登记对指定主题的订阅,该方法包括下述步骤响应于由发布者应用把关于指定主题的消息发布到该系统,确定针对该主题是否登记了任何订阅者应用;如果这样登记了任何订阅者应用,则把所述发布的主题消息传递到这种登记的订阅者应用;如果针对所述指定主题没有登记任何订阅者应用,则存储所述指定主题消息,并且响应于新订阅者应用对所述主题的随后的登记,把所述存储的消息传递到所述新订阅者应用。
根据第二方面,本发明提供ー种包括指令的计算机程序,当在数据处理系统中执行该指令吋,该指令使该系统执行以上方法步骤。根据第三方面,本发明还提供一种适于控制ー个或多个发布者应用和ー个或多个订阅者应用之间的消息的传递并具有用于把指定主题与ー个或多个订阅者关联的主题管理器的通讯系统,所述主题管理器包括登记装置,使订阅者应用能够针对指定主题进行登记;和匹配装置,响应于接收到关于指定主题的发布消息,确定是否有任何订阅者应用被登记为接收关于该主题的消息;该系统还包括传递装置,布置为响应于所述匹配装置的肯定确定,把关于指定主题的这种发布消息传递到针对所述指定主题登记的订阅者应用;和缓冲存储器,所述传递装置布置为响应于所述匹配装置的否定确定把所述发布主题消息存储在缓冲存储器中,所述传递装置响应于接收到新订阅者应用对所述主题的随后的订阅请求而把所述消息从所述缓冲存储器传递到所述新订阅者应用。也就是说,如果订阅者存在并且可以在发布时把关于发布者指定主题的消息传递给他们,则执行这种操作。然而,如果针对给定主题不存在订阅者,则消息(和关于该主题的所有随后的消息)被存储,并在稍后在订阅者针对这个主题登记时被传递。这可称为在发布/订阅环境中提供“至少一次(at-least-once)”服务质量。优选地,通讯系统是通讯和排队系统,所述指定主题的后续的消息存储在该指定主题的队列上,此外,优选地,关于未登记订阅者的其它特定主题的发布消息存储在各自队列上。在这种通讯系统中,优选地,响应于新订阅者应用对指定主题的随后登记,传递包括把该指定主题队列上存储的消息移至该订阅者应用的输入队列。优选的默认情况是一个或多个存储的指定主题消息在传递到所述新订阅者应用之后被丢弃。也可以在存储的指定主题消息被丢弃之前,将其传递到在第一个这种新登记的预定时间内针对所述指定主题登记的任何其它新订阅者应用。例如,所述预定时间能够是零,从而消息仅被传递到同时针对该指定主题登记的订阅者应用。为了避免锁上应用并且为了触发适当的反馈消息的产生,希望确保如果在预定时间内没有新订阅者应用针对发布的主题登记,则主题消息被丢弃。
能够应用本发明的情形的ー个例子是通知系统,其中一组用户(Alice、Bob、Charles)能够接收发送给他们使用的多个电子装置的消息(每个人具有例如工作用的桌上型计算机、智能电话和他们有时在顾客地点使用的膝上型计算机)。因为他们可能在多个地方登录到通知系统,所以他们希望每个装置接收任何新的通知消息,从而他们在那时偶然观看无论哪个屏幕都会让他们知道他们有消息。为了实现这个結果,每个装置上的通知应用能够分别订阅主题 “Al icesMessages ”、“BobsMessages ” 或 “CharlesMessages”,并且发布将会被发送给附接的所有装置。然而,如果他们的所有装置当前关机或登出(也就是说,它们未登记为订阅者),则用户将仍然希望下次他们打开ー个装置时看见他们的任何消息。这种要求能够由根据本发明的通讯系统实现。这给出了发布/订阅的通常的益处推送(push)消息而非拉拽消息以及ー对多传递。这里,关键点在于不需要提前订阅的管理決定。不管怎样,针对主题存储消息,并且当有人登记兴趣吋,消息可用。


现在将參照如附图中所示的本发明的优选实施例仅作为示例描述本发明,在附图 中图I是常规方式的控制发布者应用和订阅者应用之间的消息的传递的通讯系统的不意图;图2是根据本发明的控制发布者应用和订阅者应用之间的消息的传递的通讯系统的不意图;图3是示出在接收到发布时的图2的系统的操作的流程图;以及图4是示出在接收到订阅时的图2的系统的操作的流程图。
具体实施例方式在图I中,以示意性的简化的形式显示了常规通讯系统的相关部分,其中通讯提供者10 (诸如,IBM的WebSphere MQ V 7.0)控制ー个或多个发布者应用11和ー个或多个订阅者应用12之间的消息的传递。在发布/订阅通讯系统的正常使用中,每个订阅者应用12与通讯提供者10的连接导致队列(诸如,队列15)的创建,特定订阅者的消息应该放在该队列上。在那时或者在以后的任何时间,订阅者应用可向主题管理器20的登记部件21登记它所感兴趣的主题的订阅,主题管理器20是通讯提供者的一部分。订阅者可持久地(一旦登记就保持订阅,直至明确删除)或非持久地(当应用断开连接时,订阅被去除)这样做。在通讯系统内维护已知主题的树22,在树22中,每个节点(诸如,节点23)记录主题串和对各个登记的主题的订阅的列表。在树的顶部的基或管理节点24定义它的孩子主题的属性,例如安全性和持续时间。当发布者应用11发布给定主题的消息(该给定主题由该消息的主题串部分定义)时,主题管理器中的匹配软件25比较发布的主题与树的节点,并且识别匹配的主题节点(如果存在一个匹配的主题节点的话)和关联的该主题的订阅者的列表。如果找到匹配的登记,则在存在多个订阅者的情况下以反复的方式返回每个对应订阅者的地址,如例如双箭头线26所示。消息或者其拷贝随后被路由器软件27传递到合适的ー个或多个订阅者队列(诸如,15)。响应于触发事件或者当应用需要该信息时,应用可随后从订阅者队列检索(“获取(get)”)该消息以进一歩处理。然而,如果匹配软件25没找到匹配的节点并因此没找到订阅,则该消息被丢弃。如以上所解释,会出现这种需要关于某些主题发布的所有消息被自动保留以传递给随后针对这些主题登记(订阅)的订阅者。将会通过控制特定主题串的“主题对象”或类似于节点24的管理节点上的新设置对此进行控制。图2的系统大体上类似于图I的系统,发布者应用31和订阅者应用32通过通讯提供者30连接以用于传递发布的消息。当订阅者32之一初次连接到该系统时,创建订阅者输入队列35用于接受传递给该订阅者的消息。主题管理器40以与图I中相同的方式响应于来自发布者31的发布和来自订阅者应用32的订阅而创建主题树42。主题管理器还定义与每个节点关联的关联订阅者列表空间。通过把订阅者标识和地址添加到与节点关联的订阅者列表,新的订阅由登记软件41登记。随后可由匹配软件45匹配订阅者与到来的发布。如果接收到已有主题的发布,则匹配软件找到匹配,并且发布的消息以与图I中 相同的方式被路由器软件46直接传递到登记的订阅者的输入队列35。然而,如果发布(比如说MSG1)在存在对它的主题的任何订阅之前到达,则与管理节点43关联的主题对象确保除了以常规方式创建新的主题树节点(诸如,节点50)之外,还创建专用队列51以用作缓冲器并且专用队列51被分配给该特定主题节点。由于不存在对该给定主题的订阅,所以消息存储在专用队列51上以用于将来的传递。只要仍然不存在登记的订阅者,该主题的进ー步的消息就在它们到达时被添加到队列51。当如线52所指示订阅者最終订阅节点50上的新主题时,立即执行检查以查看是否有消息在关联的专用队列51上等待。如果存在消息,则系统将会循环遍历该队列上的所有消息,如点划线53所示把它们直接移至新的订阅者的队列35,在该过程中从队列51丢弃它们。替代方案是登记订阅井随后重新驱动发布处理-就好像保存队列上的每个消息再次刚刚到达ー样,并重新查看保存在该节点上的订阅者的列表。这增加了复杂性并且可能降低性能,优点在于允许多个订阅者进入。当队列51上的所有消息已被处理时,订阅通常由登记部件41登记(如点划线54所示),并被添加到该新节点的订阅列表。任何随后的发布将会随后被正常处理。通过假设现在由相关发布者应用关于新主题50发布新消息MSG2来例示这一点。与现在登记的订阅者的正常匹配将会发生,并且路由器软件46将会把MSG2直接传递到订阅者队列35。图3显示根据本发明的一个例子的由发布者应用(诸如,图2中的31)执行的方法的详细步骤。在步骤60中接收到发布之后,主题管理器40在步骤61中确定对应的主题节点是否已经存在于主题树42中。如果不存在,则在步骤62中分配包括对应订阅者登记列表的新节点(图2中的50)。无疑,该订阅者登记列表最初将是空的。然而,如果存在该发布的主题的已有节点,则在步骤63中,确定是否存在任何当前登记的订阅者。如果存在,则在步骤64中从订阅列表取回第一登记订阅者的订阅者目的地队列(当订阅者应用首次连接到通讯系统时创建),并且发布消息被传递到该订阅者队列(步骤65)。如果存在超过ー个登记的订阅者(步骤66),则在步骤67中取回下ー个订阅者目的地队列,并且该过程反复地继续进行,直至消息已被传递到所有登记的订阅者。这是该过程的常规部分。然而,如果在步骤63中确定不存在新接收的发布的主题的登记订阅者,则在步骤70中确定是否已针对该主题设立了保存队列(图2中的51)。如果未设立,则在步骤71中分配这种队列,在此之后,或者如果保存队列已经存在,则在步骤72中,新的发布消息被存储在该队列中。每个消息的发布随后完成(步骤73)。该新主题的后续的消息继续被存储在该保存队列上,直至诸如接收到对该新主题的订阅的时侯。图4详细显示根据本发明的一个例子的由订阅者应用(诸如,图2中的32)执行的方法步骤。假设在步骤80中接收到新的订阅(要注意的是,订阅目的地队列将会通常在对应订阅者应用首次连接时由一般通讯系统/队列管理器分配)。在步骤81中首先检查在主题树(图2中的42)中是否已经存在该订阅的主题的节点。如果不存在,则必须分配节点和关联的订阅登记列表(步骤82)。如果在步骤81中确定存在已经存在于树中的节点,则关于该主题的消息可能已被发布了。因此必须在步骤83中确定是否存在可能已缓冲了这种消息的该节点的保存队 列。如果不存在保存队列,则没有消息悬而未決,并且订阅目的地队列信息(诸如,图2中的队列35)能够被立即添加到订阅登记列表(步骤84)。这就完成了订阅(步骤85)。如果在步骤83中确定存在保存队列,则必须接下来在步骤86中确定在保存队列上是否存在发布的消息。如果在保存队列上存在发布的消息,则在步骤87中把这些消息移至订阅目的地队列35。当所有这种消息已被从保存队列移至订阅目的地队列时,通过步骤84把订阅目的地队列信息添加到订阅登记列表,并且通过这个替代路线完成订阅过程(步骤 85)。
权利要求
1.一种在通讯系统(30)中控制一个或多个发布者应用(31)和一个或多个订阅者应用(32)之间的消息传递的方法,该系统包括主题管理器(40),利用主题管理器(40)能够为指定订阅者应用登记对指定主题的订阅,该方法包括下述步骤 响应于由发布者应用把关于指定主题的消息发布到该系统,确定(63)针对该主题是否登记了任何订阅者应用; 如果这样登记了任何订阅者应用,则把所发布的主题消息传递(65)到这种登记的订阅者应用; 如果针对所述指定主题没有登记任何订阅者应用,则存储(72)所述指定主题的消息,并且响应于接收到新订阅者应用对所述主题的随后的订阅请求(80),把所述存储的消息传递(87)到所述新订阅者应用。
2.如权利要求I所述的方法,其中所述通讯系统是通讯和排队系统,所述指定主题的 后续的消息存储在该指定主题的队列上。
3.如权利要求2所述的方法,其中关于未登记订阅者的其它特定主题的发布消息被存储在各自的队列上。
4.如权利要求2和3中任一项所述的方法,其中响应于接收到新订阅者应用对指定主题的所述随后的订阅请求,所述传递步骤包括把该指定主题队列上存储的消息移至该订阅者应用的输入队列。
5.如任一前述权利要求所述的方法,其中一个或多个所述存储的指定主题消息在传递到所述新订阅者应用之后被丢弃。
6.如权利要求5所述的方法,其中在所述存储的消息被丢弃之前,所述存储的指定主题消息被传递到在第一个这种新请求的预定时间内针对所述指定主题登记的任何其它新订阅者应用。
7.如任一前述权利要求所述的方法,其中如果在预定时间内没有新订阅者应用针对所述主题登记,则所述主题消息被丢弃。
8.一种包括指令的计算机程序,当在数据处理系统中执行该指令时,该指令使该系统执行如权利要求I至7中任一项所述的方法的步骤。
9.一种适于控制一个或多个发布者应用(31)和一个或多个订阅者应用(32)之间的消息的传递并具有用于把指定主题(42)与一个或多个订阅者关联的主题管理器(40)的通讯系统,所述主题管理器(40)包括 登记装置(41),使订阅者应用能够针对指定主题进行登记;和 匹配装置(45),响应于接收到关于指定主题的发布消息,确定是否有任何订阅者应用被登记为接收关于该主题的消息; 该系统还包括传递装置(46),传递装置(46)布置为响应于所述匹配装置的肯定确定,把关于指定主题的这种发布消息传递到针对所述指定主题登记的订阅者应用;和 缓冲存储器(51),所述传递装置布置为响应于所述匹配装置的否定确定把所述发布主题消息存储在缓冲存储器(51)中,所述传递装置响应于接收到(52)新订阅者应用对所述主题的随后的订阅请求而把所述消息从所述缓冲存储器传递到所述新订阅者应用。
10.如权利要求9所述的通讯系统,其中所述主题管理器是队列管理器的一部分,队列管理器用于响应于每个订阅者应用连接到队列管理器而为每个订阅者应用创建输入队列,所述传递装置布置为把关于指定主题的所述发布消息传递到针对所述指定主题登记的订阅者应用的所述输入队列。
11.如权利要求10所述的通讯系统,其中所述缓冲存储器是由所述队列管理器分配并控制的队列。
全文摘要
一种控制一个或多个发布者应用(31)和一个或多个订阅者应用(32)之间的消息传递的通讯系统和方法包括主题管理器(40),利用主题管理器(40)能够由登记装置(41)为指定订阅者应用登记对指定主题的订阅。响应于由发布者应用把关于指定主题的消息发布到该系统,由匹配装置(45)确定(63)针对该主题是否登记了任何订阅者应用。如果这样登记了任何订阅者应用,则由传递装置(46)把发布的主题消息传递(65)到这种登记的订阅者应用。如果没有针对所述指定主题登记订阅者应用,则所述指定主题消息被存储在缓冲存储器(51)中并且响应于接收到新订阅者应用对所述主题的随后的订阅请求(80)而被传递(87)到所述新订阅者应用。
文档编号G06Q10/06GK102859541SQ201080066294
公开日2013年1月2日 申请日期2010年11月30日 优先权日2010年4月19日
发明者A·P·伯兹莫尔, I·C·万斯通, A·D·班克斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1