用于订阅匹配的方法和系统的制作方法

文档序号:7666592阅读:158来源:国知局
专利名称:用于订阅匹配的方法和系统的制作方法
技术领域
本发明涉及数据处理网络内的通信,并且具体地,涉及实现发布/订阅通 信范例的装置、方法和计算机程序。
背景技术
在消息网络内,可以通过一个或多个"消息代理"把消息从一个数据处 理系统传送到另一数据处理系统,该消息代理提供路由,并且在多数情况下, 提供格式化和其他服务。尽管可能在分布式代理网络内的不同点上实现代理 功能,但是通常,代理位于网络内的通信集线器上。
很多消息代理支持发布/订阅通信范例。这包括公布者发送可以被已经登 记了其有兴趣接收的通信类型的一组订户接收的通信,而通常无须发布需得 知哪些订户感兴趣的应用程序。发布/订阅允许订户接收感兴趣的领域内的最
新信息(例如,股票价格或诸如或新闻动画或特价之类的事件),而不必抢先 且重复地从各发布者处请求该信息。
典型的发布/订阅环境具有多个发布者应用程序,这些发布者应用程序通 过代理把消息发送到位于网络间的远程计算机上的潜在大量的订户应用程 序。订户用代理登记并标识他们希望接受的信息的种类,并且该信息被存储 在代理处。在很多发布/订阅实现中,订户指定代表他们希望接受的信息的一 个或多个主题名称。发布者把主题名称分配给他们发送到发布/订阅代理的消 息,并且代理使用匹配引擎来比较所接收的消息的主题与已登记订户组的所 存储的订阅信息。该比较确定应该把消息转发到哪些订户。
另 一种已知的发布/订阅环境在与订户应用程序相同的数据处理系统上
实现发布/订阅匹配引擎。发布者把发布物(publication )发送到该系统,并 且发布/订阅匹配引擎确定哪些发布物是本地订户应用程序感兴趣的。在本发 明的上下文中,术语"发布/订阅代理"想要包括在发布者和订户之间的中间 网络节点处实现的发布/订阅匹配引擎,该术语还想要包括当在订户的数据处 理系统上被实现时的发布/订阅匹配引擎。
尽管订阅匹配经常包含检查所发布的消息的报头内的主题域,但是匹配 可以另外地或选择性地包含检查其他消息报头域或检查消息内容并基于附加
信息过滤消息。例如,实现Java,消息服务UMS)的消息代理通常允许基
于消息性质(而不是基于作为消息内容或"有效负载"的应用程序数据)来 过滤。消息代理可以执行附加功能,比如格式化或另外在把所接收的消息转
发给订户之前处理该消息。(Java和基于Java的名称是Sun Microsystem公司
的商标。)
支持发布/订阅范例并且支持基于消息性质或消息内容来过滤的消息代 理产品的商业可用示例是如在IBM公司2006年七月的文件"IBM WebSphere Message Broker Version 6 Release O—Introduction"和IBM 2006年七月的 文件"IBM WebSphere Message Broker Version 6 Release 0—Publish7Subscribe" 中所描述的IBM公司的WebSphere消息代理。(IBM和WebSphere是国际商 业机器公司的商标。)
该发布/订阅范例是把信息散布到多个用户的有效方式,并且对于那种发 布者和/或订户组可能随时间变化的环境和发布者和/或订户的数量可能很大 的环境尤其有用。尽管一些订阅是"非永久的"(即,仅当订阅应用程序与代 理连接时才保持激活),但是很多订阅是"永久的",并且保持激活直到订阅 应用程序明确地退订(unsubscribe )。当"永久的"订户不再希望接收发布物 时,订户可以从代理中退订(或从特定的主题或主题组中退订)。
通常分层地指定主题,例如,使用字符串格式"根/主题A/主题X",其 中主题A是在根节点下面的层次的第一级别中的可用主题之一,并且主题X 在主题A下面的层次的第二级别中的可用主题之一,并且"/"字符是层次的 不同级别的主题名称之间的分隔符。图l示出简单的主题树,其中根节点下 的树的第一级别具有两个主题,主题A和主题B,并且在主题A下的树的第 二级别具有多个主题,主题X、主题Y和主题Z。订户SUBSCRIBER1 (图 l中的SUB.l)已经订阅了接收主题"根/主题A/主题X"上发布的消息,并 且他们的订阅与主题树的各节点有关。依次比较每个所接收的消息内的主题 串的元素与在主题树的各级别处的节点组,直到标识出与所接收的主题串匹 配的树节点,或直到确定没有匹配。当标识了匹配时,把发布物转发给已经 登记接收关于该主题的发布物的订户(经过基于消息性质或已经被指定的在 具体订阅内的消息内容检查任意过滤器后)。 这种分层结构允许发布者和订户在所发布的消息内和在订阅请求内非常 精确地指定主题,并且允许使用迭代地移过主题层次的匹配算法来比较在所 接收的消息内的主题串与订阅的内容。
传统的分层主题名称和相应的匹配算法的问题是发布者和订户以及发布 /订阅代理必须都知道主题层次并且必须都使用对于分层主题名称的一致的 表达。例如,由于在主题层次中优选"汉普郡/天气,,而不是"天气/汉普郡,, 不是因为直觉的原因(反之亦然),所以新订户必须学会发布者所使用的具体 层次。类似地,新发布者需要与现有订户的期望一致,或者新发布者必须向 所有订户通知他们的具体主题层次,以便订户能够相应地订阅。
在过去,对于单个公司内的私有网络和对于公司间发布/订阅解决方案来 说,发布者和订户已经接受了这种限制,因为这看似对于发布者和订户的整 合以及对于有效的发布/订阅代理操作都是至关重要的。然而,新发布者和订 户要实现现有分层主题命名协定的需要可能阻碍新发布者和/或订户加入该 发布/订阅网络。
通过使用通配符,例如允许订户订阅"天气/*"(其中是可以取任 意值的通配符)代替不得不分别订阅"天气/汉普郡"、"天气/多塞特,,和"天 气/萨里"等,实现了一些灵活性,但是,那是探索层次知识的示例,并不能 使用户避免学习和遵照层次的不便。例如,"英国/天气/*"的订阅将不匹配关 于关于"英国/*/天气"的发布物。
Lepori等人的 "Push communication services: a short history, a concrete experience and some critical reflection" , Studies in Communication Sciences 2/1, 2002, 149-164页,描述了简化的可替换的途径,在其中发布/订阅网络中的 发布者把他们的发布物分类,并且订阅的用户根据使用布尔(Boolean)匹配 的简单的关键词方案指定他们的兴趣。然而,由Lepori等人提出的简单的关 键词組对于在很多发布/订阅系统中所出现的大量不同的主题来说是不够精 细的(granular)。可以预期指定大量关键词的典型订户将接收到过多部分的 所发布的消息。例如,使用布尔操作"OR"("英国"OR "汉普郡"OR "天 气")指定一组关键词的订户可以预期将收到关于其他国家的天气信息以及关 于主题"英国"的所有所发布的信息和关于主题"汉普郡,,的所有信息。为 了减少他们接收的发布物的数量,订户可以使用布尔操作符AND,不过指定 ("英国"AND "天气"AND "汉普郡")的订阅将错过具有主题("英国"、
"天气,,)的发布物。即使使用理解力好的关键词匹配算法,充分广泛定义了 其订阅以捕获所有期望的发布物的订户很有可能还会收到大量不需要的发布 物。
因此,使用布尔匹配的关键词方案不是很适合于需要接收所有相关商业 重要发布物的订户,也不适合于不希望负担大量不相关发布物的订户。为了
解决这些问题,Lepori等人的相关技术读者将回到更加精细和精确(和限制) 的分层主题命名方案。

发明内容
提供了用于在发布/订阅通信网络中的灵活的主题标识的方法、装置和计 算机程序。发布者和订户能够指定他们关于在订阅匹配期间将由发布/订阅代 理使用的主题分类方案的意图,并且代理响应于发布者和订户之一或两者所 指定的意图而调用各自的订阅匹配组件。所调用的匹配组件每个实现与所指 定的主题分类方案一致的订阅匹配处理。
本发明的第一方面提供了一种用于从至少一个发布者处接收发布物并将 发布物转发给已经登记了对接收发布物的兴趣的订户的发布/订阅代理。该发 布/订阅代理包括用于比较在所接收的发布物内的主题标识符与在被存储在 所述发布/订阅代理中的订阅内的主题标识符以确定应该把所述发布物转发 给哪些订户的装置;其中,所述用于比较的装置包括一组订阅匹配组件和用 于选择所述一组订阅匹配组件中的至少一个的装置,其中,所述用于选择的 装置响应于指定所要求的主题分类方案的订户或发布者中的至少一个。
本发明的第二方面提供了用于发布/订阅数据处理系统中的订阅匹配的 方法,其中,所述订阅匹配包括比较所接收的发布物内的主题标识符与订户 的所存储的订阅内的主题标识符,以确定是否应该把所接收的发布物转发给 订户,该方法包括步骤
从订阅中确定各自的订户希望订阅匹配来实现第 一主题分类方案还是第 二主题分类方案;以及
响应于所述确定步骤,调用订阅匹配组件来进行实现所述第一主题分类 方案和第二主题分类方案中相应一个的订阅匹配处理。
在第一实施例中,发布者指定的主题分类方案是分层的主题分类方案, 并且第二主题分类方案是非分层的关键词分类方案。以这种方式,如果发布
者指定分层的主题串,那么订户可以决定是否使用对应于该发布者的主题层 次的主题串或使用作为独立关键词的主题串元素来指定他们感兴趣的主题。 然后,发布/订阅代理依照每个订户的决定实现不同的订阅匹配处理。
在本发明的一个实施例中,当发布者第一次与发布/订阅代理连接时,发 布者向发布/订阅代理通知他们的主题分类方案。然后,代理保留各个发布者 的方案信息。在另一实施例中,发布者指定在各个发布物内他们的主题分类 方案,或者发布者可以指定用于找到他们的方案的信息。在后一示例中,发
布物可以包括由代理使用以在需要时访问XML方案信息的统一资源标识符 (URI )。
当订户指示他们的订阅想要反映发布者指定的方案时,代理调用对该方 案特定的订阅匹配组件。例如,如果订阅指示想要考虑由发布者指定的主题 层次,那么代理调用匹配算法,其比较所接收的发布物与分层主题树以标识 相关订阅——逐级迭代地匹配分层主题串的元素。仅在发布物和订阅包括相 同的分层主题串(经过通配符和过滤器,如上所述)的条件下,匹配算法才 标识匹配。然而,如果订户指示想要把各自的订阅内的主题名称元素解释为 一组独立的关键词,那么代理调用实现基于关键词的比较的合适的订阅匹配 组件。
这给订户关于他们希望接收哪些发布物的相当大的灵活性,包括是否限 于包括关于明确主题串的发布物或是否接收关于订户感兴趣的指定的主题组 的所有发布物。代理能够通过选择合适的订阅匹配处理来响应订户的要求。
在一个实施例中,单个订户可以指定不止一个主题串,想要将第一串与 来自实现第一分类方案的第一组发布者的在代理处接收的发布物比较,而将 第二串与来自实现第二分类方案的第二组发布者的发布物比较。
类似地,发布者可以指定不止一种格式的信息,用于通过与不同的订阅 相关的不同的匹配算法来处理。例如,发布物可以包括在其中可以指定分层 主题串的主题域,以及在其中可以指定一组一个或多个标签或关键词的标签 域。这允许单个发布物包括用于与不同的订阅方案比较的合适的格式的信息。
加入发布/订阅网络的新订户可以使用一组独立关键词(例如,指定布尔 OR操作或使用逗号分隔符的逻辑等效物)初始地订阅以接收关于大量感兴趣 的笼统主题的发布物。代理比较每个关键词与已发布的消息,并且把与任意 关键词匹配的信息发送到订户。然后,订户可以通过从所接收的组中选择最
感兴趣的发布物,并且选择这些感兴趣的发布物的主题串用在所精选的订阅 或订阅组中来精选他们的订阅。例如,所精选的订阅组可以包括从被订户标 识为特別有帮助的发布物中提取的 一组分层的主题串。现有技术解决方案中 没有提供这种订户能在不同的主题分类方案间切换的能力。
以类似的方式,依赖于分层主题串来接收发布物的第 一子集的现有订户 可能希望定期检查发布/订阅网络以便找到感兴趣的其他发布物。这可以通过 定期把他们的订阅切换成较少受限的主题分类方案来实现。如果更广范围的 订阅标识了附加的感兴趣的发布物,那么可以提取在这些附加发布物内的主 题串并将其用来创建包括分层主题串的新订阅。
上述示例示出本发明提供了相当大的灵活性一一在可以被满足的主题分 类方案方面,以及在可以如何表达和解释发布者和订户的意图方面。
本发明的另 一 方面提供了 一种在发布/订阅通信网络中使用的数据处理系统,所述系统包括
用于从一个或多个发布者处接收发布物的装置;
用于把发布物发送到一个或多个订户的装置;以及
发布/订阅代理,用于比较在所接收的发布物内的主题标识符与在被存储 在发布/订阅代理中的订阅内的主题标识符,以确定应该把哪些发布物发送给 哪些订户;
其中,所述发布/订阅代理包括至少两个订阅匹配组件和用于从订阅中确 定各个订户想要代理的订阅匹配来实现第一发布者指定的主题分类方案还是 第二主题分类方案;以及
其中,所述发布/订阅代理响应于所述确定步骤来调用订阅匹配组件,以 进行实现第一主题分类方案和第二主题分类方案中相应一个的订阅匹配处 理。
本发明的另 一方面提供了 一种在发布/订阅通信网络中使用的数据处理 系统,所述系统包括数据处理单元;数据存储单元;网络通信接口;以及 发布/订阅代理,用于从至少一个发布者处接收发布物并将发布物转发给已经 登记了对接收发布物的兴趣的订户,其中,所述发布/订阅代理包括用于比 较在所接收的发布物内的主题标识符与在被存储在所述发布/订阅代理中的 订阅内的主题标识符以确定应该把所述发布物转发给哪些订户的装置;其中, 所述用于比较的装置包括一组订阅匹配组件和用于选择所述一组订阅匹配组件中的至少一个的装置,其中,所述用于选择的装置响应于指定所要求的主 题分类方案的订户或发布者中的至少一个。
可以以计算机程序代码实现本发明的实施例,并且可以使其作为程序产 品可用,该程序产品包括被记录在记录介质上用于控制在其上执行该程序代 码的数据处理装置的操作的程序代码。


下面,以示例的方式,参考附图更详细地描述本发明的实施例,在附图

图1是诸如在本技术领域中已知的、简单主题层次的示意表示; 图2是诸如在本技术领域中已知的、在其中可以实现本发明的发布/订阅 网络的示意表示;
图3是根据本发明的实施例的示例消息结构的示意表示;
图4是根据本发明的实施例的发布/订阅代理的组件的示意表示;以及
图5是表示根据本发明的实施例的订阅匹配方法的示意流程图。
具体实施例方式
下面更详细地描述本发明的多个实施例,以进一步理解本发明和其优势 以及可能的实现。本发明不限于这些图示的实施例。所描述的实施例包括用 于在发布/订阅通信环境下的订阅匹配的方法、装置和计算机程序。激活和/ 或停用(deactivation)事件与订阅关联,并被用于控制何时激活订阅。避免 传统的订阅匹配用于不活动的订阅。
图2示出在其中可以实现本发明的简单的发布/订阅消息网络。这种网络 在本技术领域中是已知的。运行在各自的数据处理系统30、 40上的一组发布 者10、 20可以能够通过发布者把消息发送到中间发布/订阅消息代理50来发 布可以^皮多个订户90、 100、 110接收的消息。发布者和订户不需要在他们之 间直接连接并且不需要彼此的地址信息。而是,发布者把消息发送到代理50, 该消息包括诸如他们所发布的消息内的消息主题之类的信息。在该示例中, 发布者10、 20是依赖下面的消息基础结构产品150、 160的消息传送功能的 应用程序,其中产品150、 160保存网络地址和用于代理50的其他通信信息。
在该示例中,在与发布者系统30、 40分离并且与订户的系统120、 130、 140分离的数据处理系统60上实现消息代理。该消息代理包括订阅匹配引擎 70和相关联的所存储的订阅列表80。订户向代理50登记并且比如通过指定 一个具体的消息主题或多个主题,来指示他们对具体信息的兴趣。把订户的
要求存储在代理处。在一个实施例中,代理还可以存储用于各个订户系统的 网络地址和协议,并且代理可以发起连接;但是,在优选实施例中,代理仅 存储了订户系统和他们的订阅的名称,并且把网络和通信信息保存在订户的 系统处,并且在订户发起与代理的连接时使用该信息。
代理50中的订阅匹配引擎70依次比较所接收的发布物与所存储的订阅, 以确定哪些所接收的发布物与哪些订户的要求匹配,并且代理把发布物转发 给感兴趣的订户。虽然图1中仅示出了很少的发布者和订户,但是网络内可 能有很多发布者和很多订户,并且发布/订阅代理可能是分布式代理网络的一 部分。
出于成本原因并且为了促进正在进行的开发,普遍以计算机程序代码实 现发布/订阅匹配引擎。通常,可以以计算机程序代码实现包括所描述的发布 /订阅代理、发布者应用程序和订户应用程序的本发明的各种元素。可以以诸 如C++、 JavaTM或SmallTalk之类的面向对象的编程语言或以诸如C编程语言 的过程编程语言来写出该代码。可以在通用计算机上或在专门的数据处理装 置上执行这些程序代码组件。如下面所详细确认的,可以全部在单个数据处 理设备上执行实现一些特性和本发明的方面的程序代码,或可以将其分布在 诸如局域网(LAN)、广域网(WAN)、或因特网之类的数据处理网络内的多 个数据处理系统之间。在这种网络内的不同系统和设备间的连接可以是有线 的或者无线的,并且不限于任何具体通信协议或数据格式,并且这种网络中 的数据处理系统可以是异构的系统。
在很多情况下,将在高容量、高性能、与网络连接的数据处理系统上实 现发布/订阅代理-因为这种系统可以维持用于大量发布者和订户的高性能发 布物的发布量。发布/订阅代理可以是边缘服务器的组件(即,代理可以是一 组网络服务器或应用程序服务器组件之一)或网关设备。然而,近些年来已 经开发出具有小代码印迹的"微代理"解决方案,并且已经将其用于例如远 程遥测应用中,所以现在真实地说,在任意一个宽范围的数据处理系统和设 备上都可以实现发布者、订户和发布/订阅代理。因此可以在包括无线连接的 PDA、移动电话和自动传感器设备的网络中以及包括复杂的并且高性能的计
算机系统的网络中实现本发明。
对于本领域的技术人员来说将很清楚,可以以软件或以硬件(例如,使 用电子逻辑电路)实现分布式发布/订阅通信网络的各种组件。例如,可以通 过硬件比较器实现发布/订阅匹配引擎70,该比较器比较所发布的消息内的主 题名称与所存储的订阅内的主题名称。然后,在电子电路内处理指示匹配或 缺乏匹配的比较器的输出信号,以控制是否把消息转发给具体订户。可以通 过电子过滤器实现通过某些发布/订阅匹配引擎所实现的过滤步骤一一尤其 是,在施加过滤器在其上的数据值作为信号振幅来表示的情况。
如上所释,本发明适用于依赖位于中心的代理(如图1所示)或分布式 代理网络的发布/订阅通信环境。本发明提供了管理多个订户的订阅的发布/ 订阅代理的具体优势,但是,本发明还适用于在其中发布/订阅代理包括在每 个订户系统中被复制的发布/订阅匹配引擎功能性的环境。
因此,很清楚本发明适用于宽范围的操作环境,并且可以使用硬件和软 件的各种组合来实现本发明。在每种情况下,在发布/订阅通信网络内,本发
明提供了发布者和/或订户对主题的指定中的增加的灵活性和发布/订阅代理 的订阅匹配中的灵活性。
下面参考图3到5描述本发明的实施例。图3是包括一组消息报头域和 消息主体(消息的"有效负载"数据)的典型消息的结构的示意表示。消息 报头可以包括多个不同的域,该域包括,例如消息格式信息;主题域;所 要求的服务质量的指示(永久的或非永久的,以控制是否应该把消息保存到 非易失存储器,以在故障的情况下可以被恢复);以及保留标记(以指示代理 是否应该保留该发布物的副本,以使该主题的最新发布物对于此主题的未来 订户是可用的)。附加的报头域在本技术领域中是已知的。
例如发布者应用程序可以使用诸如如下的API呼叫来调用在与发布/订阅 代理的现有连接上的发送操作以发布信息
发布(主题、数据、永久性、保留) 其中"永久性"和"保留"的每个是如上所述的消息性质,并且是与所发布 的消息的报头域内的主题信息一起被指定的。所发布的消息的报头域可以包 括在其中由字符"/"来分隔文本元素的字符串。在实现分层主题分类方案的 传统的发布/订阅系统中,解译诸如"根/主题A/主题X"的由发布者指定的 主题串作为单个层次主题名称,并仅将其标识为对于指定完全相同的主题串
"根/主题A/主题X"(或等同使用诸如""主题A/主题X"或"根/主题A/" 的通配才夺)的订阅的匹配。
从编程API解释为消息报头在本技术领域中是已知的。例如,在一些已 知的系统中,消息具有包含了以类似XML格式的发布/订阅属性的报头。关 于主题"根/主题A/主题X"的所发布的消息在其消息报头中可能具有以下内 容
<psc〉
<Command>Publish</Command>
<Topic>root/topicA/topicX</Topic>
</psc>
在本发明的第一实施例中,在消息报头的附加域内提供了附加的 'match—scheme'标签。提供'match_scheme,域以使发布者能在指定主题 域内的主题串时指定他们已经实现的主题分类方案。在该示范实施例中,发 布者可以指定多个主题分类方案,并且将通过发布/订阅代理识别该方案,这 些方案包括
'match一schemeOR'其指示发布者想要把所指定的主题串的各个分离的元
素解释成可以用使用布尔OR操作符的匹配算法与订 阅相比较的独立的标签(或"关键词")。
'match—scheme-AND,其指示发布者想要把所指定的主题串的各个分离的元
素解释成可以用使用布尔AND操作符的匹配算法与 订阅相比较的独立的标签(或"关键词")。
'match_scheme=ffl'其指示发布者想要把所指定的主题串解释成可以使用
分层主题匹配算法与订阅相比较的单个分层主题名 称。
发布者可以使用如上所述的在其中用字符"/"分隔元素的传统格式来指 定主题串,但是本发明的这种主题串格式对不同的发布者可以是不同的。在 'match—scheme'值内捕获具体发布者的意图。
例如,第一发布者应用程序可以用'match_scheme=ffl,指定"2012—奥 林匹克/英国—奥林匹克_团队/帆船"。该发布者的意图是代理和订阅者解释此 作为更笼统的类别"2012一奥林匹克"内的类别"英国—奥林匹克—团队"内的 主题子类别"帆船"。
第二发布者可能用'match—scheme-OR,指定相同的主题串"2012—奥林 匹克/英国—奥林匹克—团队/帆船",在该情况下,该发布者的意图是可以分别 匹配分离的元素"2012_奥林匹克"、"英国—奥林匹克—团队"和"帆船"。也 就是,发布者的意图是可以把主题"2012—奥林匹克"、"英国—奥林匹克—团队" 和"帆船"的任意一个标识为对于当前应用的匹配。
在另一实施例中,在建立与发布/订阅代理的连接时指定发布者的主题分 类方案('match—scheme'值)。这在大多数情况下是可接受的,因为发布者 的方案不太可能在连续的发布物之间改变,并且确实具有代理不必在接收到 每个已发布的消息时动态地解释'match_scheme,值的优势。
类似地,订户还可以指定多个不同的主题分类方案之一,在本实施例中 该方案包括
'match一scheme二OR'其指示订户意图是,应该把在他们的订阅中所指定的
主题串的各个分离的元素解释成可以用使用布尔OR 操作符的匹配算法与所接收到的发布物内的主题信息 相比较的独立的标签。
'match一scheme-AND,其指示订户意图是,应该把在他们的订阅中所指定的
主题串的各个分离的元素解释成可以用使用布尔 AND操作符的匹配算法与所接收到的发布物内的主 题信息相比较的独立的标签。
'match—scheme=ffl'其指示订户想要把所指定的主题串解释成可以使用分
层主题匹配算法与所接收的发布物相比较的单个分层 主题名称。
'match—scheme=PUB,其指示订户希望把他们所指定的主题串与发布者指定
的意图一致地解释(即,依据由发布者指定的 match—scheme值的"OR"、 "AND"或"HI"的 match—scheme值)
当建立新连接时(或当接收到新发布物时,如上所述)可以通过发布/订 阅代理解释发布者和订户所指定的意图,并且当进行订阅匹配时应用该意图, 如下更详细地描述的。如果订户指定了代理不能处理的所要求的 'match_scheme,,那么协商可能随之而来,以使订户能指定与由代理所支持 的匹配算法之一相一致的匹配方案——初步检查代理是否能处理第一个由订
户指定的match—scheme,然后,如果不能,检查代理是否能处理第二个指定 的match—scheme。如果订户的要求确实很重要并且代理不能满足该要求,那 么可能拒绝该订阅请求。在一个实施例中,如果需要,代理可以取出或调用 远程匹配算法。
如图4所示,根据本发明的优选实施例的发布/订阅消息代理200包括与 一组匹配组件220、 222、 224关联的匹配引擎210和匹配组件选择器230。 用于每个已连接的发布者系统的接收器组件260包括通信栈和用于把所接受 的消息从所接收的规范字节格式分解(demarshal)成消息代理的内部消息表 示的协议处理器模块。有对于每个订户系统的相应的发射器(transmitter), 用于把消息汇集成规范的字节格式,以允许消息在网络连接上流通。通信栈 能访问用于与外部网络通信的TCP/IP套接字。消息代理200在具体的TCP 端口上监听新建立的客户连接。TCP/IP仅是一个示例协议,并且本发明不限 于任何具体的通信协议。
当接收到进入的连接请求时,消息代理引导用于该客户的通信栈。该栈 负责维持与客户的连接并监视套接字连接的当前状态。通信栈引导协议处理 模块,并且协议处理模块处理所接收的消息的格式和通信协议的编码和解码, 以便实现可以由消息代理使用的内部目标表示。例如,协议模块将把来自发 布者客户的进入消息分解成为目标形式,并将其提交给发布/订阅匹配引擎 210,用于与已登记的订阅比较,并且将把其汇集用于传递到订户。另外,当 发布者请求与代理连接时,发布者还指定其如上所述的主题分类方案。然后, 把用于每个发布者的主题分类方案存储在代理上的表格240中。
订户把他们的订阅请求发送给代理,并且这些订阅请求指定了主题串和 主题分类方案两者。把订阅存储在代理上的贮存器250中。对于主题串被指 定给其作为分层主题串的每个订阅,把这组分层的主题元素添加到表示所有
已登记的订阅的整组分层主题串的主题树中。也就是,把每个订阅的主题串 表示为树内的路径(见图1)。除了这些分层的主题串以外,由订户指定的任 意 一卄分层的串与列出当前已登记的订户的所有主题分类方案的文件255 —起 也被存储在贮存器250中。在本实施例中,通过其'match—scheme'值把订 阅索引到贮存器中。
图5示出响应于接收到新的发布物而由发布/订阅代理进行的步骤的序 列。接收器组件的协议处理模块把消息分解并把消息传递到发布/订阅匹配引擎210,如上所述。响应于接收280所发布的消息,进行初始检查290,以确 定是否有任何当前已登记的订阅。如果该确定是否定的,那么删除消息300。 如果确定是肯定的,那么调用310匹配组件选择器230,以确定用于对该发 布物进行订阅匹配的合适的匹配组件或 一组匹配组件220 、 222 、 224 。
检查订阅贮存器250中的文件255内的'match—scheme'列表,以确定 320是否有任何当前已登记的订户已经指定了期望的主题'match—scheme', 并标识方案列表。如果有任何已登记的订户已经指定了依照特定主题分类方 案来解释其主题串的要求,那么匹配组件选择器230选择330用于该方案的 相应的匹配组件。选择器230选择另外的匹配组件,用于在其中存在当前已 登记的订户的每个主题分类方案。
然后,匹配引擎210依次调用340每个已选择的匹配组件,并且对所接 收的发布物执行350他们各自的匹配处理。对于每个已选择的匹配组件220、 222、 224,比较所接收的发布物与已经指定了相应的主题分类方案的每一个 订阅(即,具有对应于各自的匹配组件的'match—scheme'值的每个订阅)。 因此,在该实施例中,由每个订户指定的'match_scheme,优先于任何由发 布者指定的'match—scheme'——发布者的意图不能不考虑明确指定的订户 要求。
进行检查360是否存在任何没有指定主题分类方案的已登记的订户或是 否存在任何被指定的'match—scheme=PUB,。如果该确定是肯定的,那么确 定370发布者是否已经指定主题分类方案。对于先前已经向代理标识了主题 分类方案的发布者,匹配组件选择器从方案表240取出主题分类方案,并且 匹配组件选择器230选择330实现与发布者指定的主题分类方案一致的匹配 算法的匹配组件。
如果任何一个订户都没有指定'match—scheme'值,并且发布者也没有 指定'match_scheme'值,那么发布/订阅代理假设将使用默认的主题分类方 案,这在本示例实施例中是分层的主题命名方案。匹配引擎调用380用于该 主题命名方案的默认匹配组件。该匹配组件^丸行其匹配处理,以检查390匹 配的i丁阅。
然后,把从执行每个已调用的匹配组件中得到的所标识的订户组与由其 他匹配组件所标识的订户组结合400。然后,把消息转发400给匹配订户的 集合组。
虽然已经详细地描述了本发明的具体示范实施例,但是本发明不限于该 具体实施例,并且本发明包含在随后的权利要求范围内的所有实施例。本领 域的技术人员将认识到,在本发明的范围内,可以对所述实施例做出各种改 进和〗务改。
权利要求
1.一种用于发布/订阅数据处理系统中的订阅匹配的方法,其中,所述订阅匹配包括比较所接收的发布物内的主题标识符与订户的所存储的订阅内的主题标识符,以确定是否应该把所接收的发布物转发给订户,该方法包括步骤从订阅中确定各自的订户希望订阅匹配来实现第一主题分类方案还是第二主题分类方案;以及响应于所述确定步骤,调用订阅匹配组件来进行实现所述第一主题分类方案和第二主题分类方案中相应一个的订阅匹配处理。
2. 根据权利要求1所述的方法,进一步包括 标识用于一组订户的所要求的主题分类方案组;对于每个已标识的所要求的主题分类方案组,调用订阅匹配组件来进行 实现相应的主题分类方案的订阅匹配处理;以及集合所述订阅匹配处理的结果,以标识应该把所述发布物转发给的订户 的集合组。
3. 根据权利要求1或权利要求2所述的方法,其中,所述第一主题分类 方案是发布者指定的主题分类方案。
4. 根据权利要求3所述的方法,其中,在建立发布者和发布/订阅代理 之间的连接期间,给所述发布/订阅代理指定所述发布者指定的主题分类方案。
5. 根据权利要求3或权利要求4所述的方法,其中,在发布的消息内指 定所述发布者指定的主题分类方案。
6. 根据权利要求3到5的任意之一所述的方法,其中,通过在发布的消 息内的URI引用所述发布者指定的主题分类方案。
7. 根据权利要求3到6的任意之一所述的方法,其中,在不存在用于订 阅匹配以实现任何替换的主题分类方案的明确的订户指定的请求的情况下, 确定所述订户希望订阅匹配来实现所述发布者指定的主题分类方案。
8. —种发布/订阅代理,用于从至少一个发布者处接收发布物,并将发 布物转发给已经登记了对接收发布物的兴趣的订户,所述发布/订阅代理包 括用于比较在所接收的发布物内的主题标识符与在被存储在所述发布/订 阅代理中的订阅内的主题标识符以确定应该把所述发布物转发给哪些订户的装置;其中,所述用于比较的装置包括一组订阅匹配组件和用于选择所述一组 订阅匹配组件中的至少一个的装置,其中,所述用于选择的装置响应于指定所要求的主题分类方案的订户或发布者中的至少一个。
9. 根据权利要求8所述的发布/订阅代理,其中,所述用于选择的装置 选择对于由订户指定的每个主题分类方案实现相应的主题分类方案的订阅匹配组件。
10. 根据权利要求9所述的发布/订阅代理,其中,所述用于选择的装置 响应于标识没有指定主题分类方案的订阅而选择实现发布者指定的主题分类 方案的订阅匹配组件。
11. 一种在发布/订阅通信网络中使用的数据处理系统,所述系统包括 用于从一个或多个发布者处接收发布物的装置; 用于把发布物发送到一个或多个订户的装置;以及 发布/订阅代理,用于比较在所接收的发布物内的主题标识符与在被存储在发布/订阅代理中的订阅内的主题标识符,以确定应该把哪些发布物发送给 哪些订户;其中,所述发布/订阅代理包括至少两个订阅匹配组件和用于从订阅中确 定各个订户想要代理的订阅匹配来实现第一发布者指定的主题分类方案还是 第二主题分类方案;以及其中,所述发布/订阅代理响应于所述确定步骤来调用订阅匹配组件,以 进行实现第一主题分类方案和第二主题分类方案中相应一个的订阅匹配处 理。
12. —种在发布/订阅通信网络中使用的数据处理系统,所述系统包括 数据处理单元;数据存储单元; 网络通信接口;以及发布/订阅代理,用于从至少一个发布者处接收发布物并将发布物转发给 已经登记了对接收发布物的兴趣的订户,其中,所述发布/订阅代理包括 用于比较在所接收的发布物内的主题标识符与在被存储在所述发布/订装置;其中,所述用于比较的装置包括一组订阅匹配组件和用于选择所述一组 订阅匹配组件中的至少一个的装置,其中,所述用于选4奪的装置响应于指定 所要求的主题分类方案的订户或发布者中的至少一个。
全文摘要
提供了用于在发布/订阅通信网络中的灵活的主题标识的方法、装置和计算机程序。发布者和订户能够指定他们关于在订阅匹配期间将由发布/订阅代理使用的主题分类方案的意图,并且代理响应于发布者和订户之一或两者所指定的意图而调用各自的订阅匹配组件。所调用的匹配组件每个实现与所指定的主题分类方案一致的订阅匹配处理。
文档编号H04L12/58GK101193077SQ20071018695
公开日2008年6月4日 申请日期2007年11月15日 优先权日2006年11月30日
发明者乔斯·E·加尔扎, 加雷思·E·琼斯, 本杰明·J·弗莱彻, 马丁·J·盖尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1