具体实施方式
从图2开始,结合附图描述根据本发明的实施例的用于在多播消息传送环境中订阅应用消息的示例性方法、系统和产品。图2是示出了根据本发明实施例的用于在多播消息传送环境中订阅应用消息的示例性系统的网络和方块图。图2的根据本发明实施例的在多播消息传送环境中订阅应用消息的系统通常按照以下步骤来操作:消息接收设备(210)请求流管理服务器初始化对来自消息发送设备(208)的应用消息的消息订阅。消息订阅是消息接收设备被授权从消息发送设备接收的一组应用消息。消息接收设备(210)从流管理服务器(212)接收来自消息发送设备(208)的多播消息流(280)的数据通信端点。消息接收设备(210)开始在数据通信端点处监听应用消息。当开始监听应用消息之后,消息接收设备(210)通知消息发送设备(208)在数据通信端点处发布应用消息。消息接收设备(210)也可以通知消息发送设备(208)在数据通信端点处停止发布应用消息。消息接收设备(210)还可以请求流管理服务器(212)关闭消息订阅。在图2的示例性系统中,消息接收设备(210)实现为订阅客户端设备,而消息发送设备(208)实现为馈送适配器。
图2中所示的高速低等待时间数据通信环境(201)包括高速低等待时间数据通信网络(200)。网络(200)包括馈送适配器(208)、流管理服务器(212)和订阅客户端设备(210),以及用于将这些设备(208、212、210)连接在一起以便进行数据通信的基础设施。图2的网络(200)称为‘高速低等待时间’,因为在连接到网络(200)的设备之间,在流管理服务器(212)管理的消息流上发送的应用消息绕过了流管理服务器(212)。例如,在消息流(280)上从馈送适配器(208)到订阅客户端设备(210)的应用消息绕过了流管理服务器(212)。尽管此类消息不会因在流管理服务器(212)中进行处理而延迟,但是流管理服务器(212)仍保留对连接到高速低等待时间数据通信网络(200)的设备之间的流(280)的管理。
为了进一步有助于网络(200)的‘高速低等待时间’特性,将注意到网络(200)不包括路由器,路由器是一种计算机联网设备,其基本功能是跨网络将数据分组转发到其目的地。相反,每个设备(208、212、210)都通过与连接到网络(200)的其他设备的直接连接来提供其自己的用于数据通信的路由功能。由于网络(200)不包括专用于路由数据分组的计算机联网设备,所以图2的网络(200)可以称为“最低程度路由网络”。尽管图2所示的示例性网络(200)不包括路由器,但是此类最低程度路由网络只是为了说明。实际上,某些根据本发明的实施例的用于在多播消息传送环境中订阅应用消息的高速低等待时间网络可以包括路由器。
在图2中所示的高速低等待时间数据通信环境(201)包括多播消息流(280)。多播消息流是在发送设备的通信端点与至少一个接收设备的通信端点之间的多播数据通信频道。通信端点包括网络地址和用于发送设备或接收设备的端口。在多播数据通信频道中,在消息的目的地地址与接收设备的通信端点之间存在一对多的关系。也就是说,每个目的地地址都确定了一组接收设备(流的每个消息要复制到其)的通信端点。多播数据通信频道可以例如使用用户数据报协议(“UDP”)和网际协议(“IP”)、实际通用多播(“PGM”)协议或任何其他本领域的技术人员将想到的多播数据通信协议来实现。
图2的示例性系统包括通过有线连接(262)连接到高速低等待时间数据通信网络(200)的流管理服务器(212)。图2的流管理服务器(212)是其上安装有流管理模块(228)、认证模块(230)、授权模块(234)和授权策略(235)的计算机设备。流管理模块(228)是包括一组计算机程序指令的软件组件,所述指令用于代理建立从馈送适配器(208)到订阅客户端设备(210)的消息流(280)。流管理模块(228)可以通过以下步骤来代理建立消息流(280):接收来自订阅客户端设备(210)的初始化消息订阅的请求、认证订阅客户端设备(210)、授权订阅客户端设备(210)从馈送适配器(208)接收消息流(280)上的应用消息(240),以及从消息发送设备(208)向订阅客户端设备(210)提供消息流(280)的数据通信端点。除了代理建立消息流(280),流管理模块(228)还包括一组用于在消息传送环境(201)中执行其他管理功能的计算机程序指令,例如,响应于从订阅客户端设备(210)接收到发布通知,通知馈送适配器(208)开始在消息流(280)上发布消息。
图2的认证模块(230)是一组能够通过暴露的认证应用编程接口(“API”)(232)来向流管理模块(228)提供认证安全服务的计算机程序指令。认证是检验实体的身份的过程。在图2的示例性系统中,认证模块(230)检验订阅客户端设备(210)的身份。认证模块(230)可以使用各种安全基础设施(例如,共享密钥基础设施或公钥基础设施)来提供认证安全服务。
图2的授权模块(234)是一组能够通过暴露的授权API(236)向流管理模块(228)提供授权安全服务的计算机程序指令。授权是仅允许由已被授权使用资源的资源使用者来使用资源的过程。在图2的实例中,授权模块(234)标识订阅客户端设备(210)被授权在消息流(280)上接收的应用消息。图2的授权模块(234)使用授权策略(235)来提供授权安全服务。授权策略(235)是一组管理被授权实体在消息流上发送和接收应用消息的权限的规则。例如,在金融市场数据环境中,授权实体可以被授权接收包含某些金融证券(而非其他证券)的金融报价的应用消息。授权策略(235)可以在单个实体或实体在组中的成员资格的基础上授予权限。
在图2的示例性系统中,馈送适配器(208)通过有线连接(260)连接到高速低等待时间数据通信网络(200)。馈送适配器(208)是一种计算机设备,能够将在馈送适配器输入流(214)上接收的具有第一格式的应用消息转换为在馈送适配器输出流(216)上向订阅客户端设备传输的具有第二格式的应用消息。馈送适配器输入流(214)是从馈送源到馈送适配器(208)的消息流。馈送适配器输出流(216)是由流管理服务器(212)管理的从馈送适配器(208)到订阅客户端设备(210)的消息流。
在图2的实例中,馈送适配器(208)在馈送适配器输入流(214)上从馈送源(213)接收应用消息。馈送源(213)是一种计算机设备,能够将数据聚合为应用消息并将所述消息发送至馈送适配器。例如,在金融市场数据环境中,馈送源(213)可以实现为由可选价格报告机构(OptionsPrice Reporting Authority,“OPRA”)控制的馈送源。OPRA是由美国证券买卖交易产生的金融市场信息的证券信息处理器。OPRA所发布的核心信息是最终的销售报告和报价。金融市场数据环境中的馈送源的其他实例可以包括由Consolidated Tape Association(“CTA”)或Nasdaq StockMarket,Inc控制的馈送源。CTA监管在纽约股票交易所和美国股票交易所列出证券的实时交易和报价信息的发布。Nasdaq Stock Market,Inc运作NASDAQ Market CentersM,后者是美国的基于电子屏幕的股票证券市场。在金融市场数据环境中,将馈送适配器输入流称为“金融市场数据馈送”。
图2的馈送适配器(208)上安装有转换模块(220)、转换表(222)、转换功能库(224)、消息库(225)、消息模型(244)、消息传送中间件(276)以及传输引擎(278)。转换模块(220)是一组计算机程序指令,用于将在馈送适配器输入流(214)上接收的具有第一格式的应用消息转换为具有第二格式的应用消息(240),以便在馈送适配器输出流(216)上传输到订阅设备。
转换模块(220)根据转换表(222)将应用消息从第一格式转换为第二格式。图2的转换表(222)是数据结构,该数据结构规定了能够将应用消息从一种格式转换为另一种格式的转换功能。通过使用多个转换表,转换模块(220)可以将消息从多种输入格式转换为多种输出格式。在图2的实例中,转换表(222)规定了能够将从馈送适配器输入流(214)接收的具有第一格式的应用消息转换为具有第二格式的应用消息(240)以便在馈送适配器输出流(216)上传输到订阅客户端设备的转换功能。图2的转换表(222)可以使用结构化文档(例如,可扩展标记语言(“XML”)文档)来实现。
图2的转换功能库(224)是可加载的软件模块,该模块包含一个或多个转换功能,能够将应用消息中的数据字段从一种格式转换为另一种格式,或将数据字段的值从一个值转换为另一个值。包含在转换功能库中的转换功能可以例如将16位整数转换为32位整数、将存储在字符串字段中的数字转换为64位双浮点值、将一个数据字段的值增加1,或是本领域的技术人员将想到的任何其他转换。转换模块(220)通过转换功能库(224)的转换功能暴露的一组转换功能API(226)来访问转换功能。在图2的实例中,转换功能库(224)可以实现为在运行时可用于转换模块(220)的动态链接库、在编译时链接到转换模块(220)的静态链接库、动态加载Java类,或本领域的技术人员将想到的任何其他实施方式。
在图2的实例中,由馈送适配器(208)传输的应用消息(240)具有在消息模型(244)中指定的格式。消息模型(244)是定义用于创建、访问和操纵应用消息(240)(转换自从馈送源(213)接收的应用消息(未示出))的结构和格式的元数据。也就是说,消息模型(244)指定了用于解释应用消息的消息格式并包括一个或多个字段定义。每个字段定义都指定了在应用消息中存储数据的消息字段并包括消息字段的字段特性。在图2的实例中,当流管理服务器(212)代理到订阅客户端设备的消息流时,由流管理服务器(212)在馈送适配器(208)和订阅客户端设备(210)两者上建立消息模型(244)。可以使用结构化文档(如XML文档)、Java对象、C++对象或本领域的技术人员将想到的任何其他实施方式来实现消息模型。
在图2的实例中,转换模块(220)和转换功能库(224)的转换功能使用消息库(225)来处理包含在应用消息(240)中的数据。消息库(225)是软件模块,其包括一组用于根据消息模型(244)来创建、访问和操纵消息(240)的功能。通过消息库(225)暴露的消息API(227),转换模块(220)、转换功能库(224)的转换功能以及消息传送中间件(276)可以访问消息库(225)。
在图2的转换模块(220)对应用消息执行数据处理之前,转换模块(220)从馈送源(213)接收具有第一格式的应用消息(未示出)。图2的转换模块(220)可以通过馈送适配器(208)的接收传输引擎(未示出)来接收源流消息。接收传输引擎是工作在网络堆栈的传输层的软件模块,并且可以根据UDP/IP协议、PGM协议或本领域技术人员将想到的任何其他数据通信协议来实现。接收传输引擎可以将接收的应用消息直接提供给转换模块(220),或提供给消息传送中间件(276),后者又将源流消息提供给转换模块(220)。
在图2的转换模块(220)对从馈送源(213)接收的应用消息执行数据处理之后,转换模块(220)将具有第二格式的应用消息提供给消息传送中间件(276)。图2的消息传送中间件(276)是在馈送适配器(208)、可能存在的任何备用馈送适配器、订阅客户端设备(210)以及馈送源(213)之间提供高可用性服务的软件组件。另外,图2的消息传送中间件(276)包括一组用于根据本发明的实施例在多播消息传送环境中订阅应用消息的计算机程序指令。消息传送中间件(276)通常通过以下操作来根据本发明的实施例在多播消息传送环境中订阅应用消息:接收发布应用消息的通知,并且响应于接收到发布应用消息的通知,增加代表用户对所述应用消息的兴趣的计算机数据元素的值。当代表用户兴趣的值大于零时,消息传送中间件(276)将具有在发布通知中指定的特性的应用消息提供给传输引擎(278)以便传输到订阅客户端设备(210)。消息传送中间件(276)通常从流管理服务器(212)接收发布通知。从转换模块(220)接收提供给传输引擎(278)的应用消息。转换模块(220)通过消息传送中间件(276)暴露的消息传送中间件API(266)来与消息传送中间件(276)交互。
在图2的实例中,馈送适配器(208)还提供了停止在消息流上发布特定应用消息以及停止转换用户不希望发布的消息的能力。也就是说,消息传送中间件(276)还通常通过以下操纵来根据本发明的实施例在多播消息传送环境中订阅应用消息:接收停止发布应用消息的通知,响应于接收到停止发布应用消息的通知,减小代表用户对应用消息的兴趣的计算机数据元素的值,判定代表用户对应用消息的兴趣的计算机数据元素的值是否低于预定阈值,以及如果代表用户对应用消息的兴趣的计算机数据元素的值低于预定阈值,则通知数据提供者停止向消息发送设备提供应用消息。在图2的实例中,将数据提供方实现为馈送源(213)。当由于馈送适配器(208)不再具有任何对应用消息感兴趣的用户而使代表用户兴趣的值低于零时,馈送适配器(208)通知馈送源(213)停止提供应用消息。为了区分由馈送适配器传输的各种类型的消息,馈送适配器可以具有多个值,每个值都代表用户对特定类型的应用消息的兴趣。
图2的传输引擎(278)是工作在由国际标准化组织所提出的OSI协议堆栈的传输和网络层的软件组件。传输引擎(278)在联网的设备之间提供数据通信服务。可以根据UDP/IP协议、PGM协议或任何其他本领域技术人员将想到的数据通信协议来实现传输引擎。传输引擎(278)是软件模块,包括一组用于向订阅客户端设备(210)发送应用消息的计算机程序指令。图2的传输引擎(278)可以通过以下操纵来发送应用消息(240):从消息传送中间件(276)接收应用消息,将消息传送中间件(276)提供的应用消息封装成传输分组,以及通过消息流(280)向订阅客户端设备(210)发送分组。消息传送中间件(276)通过传输引擎(278)暴露的传输API(268)来操作传输引擎(278)。
图2的示例性系统中的订阅客户端设备(210)通过有线连接(264)连接到高速低等待时间数据通信网络(200)。图2的订阅客户端设备(210)是能够订阅由各个馈送适配器发送的消息流的计算机设备。例如,在金融市场数据环境中,订阅客户端设备可以订阅行情,以便在消息流(由金融证券代理商控制的馈送适配器提供)上接收特定证券的出价和要价。
在图2的实例中,订阅客户端设备(210)上安装有应用(238)、消息库(248)、消息模型(244)、消息传送中间件(252)、流管理库(272)以及传输引擎(256)。应用(238)是处理从馈送适配器(208)接收的应用消息(240)中包含的数据的软件组件。应用(238)可以处理数据以供订阅客户端设备(210)自身使用、将所述数据提供给另一个馈送适配器、或将所述数据用于其他设备。在金融市场数据环境中,安装在订阅客户端设备上的应用可以是根据包含在行情中的报价来买卖金融证券的程序交易应用。所述应用还可以是增值应用,其向行情提供诸如特定证券的最佳买卖价格(通常未包含在馈送源(213)提供的行情中)之类的信息。然后,订阅客户端设备可以将该行情发送给馈送适配器以重新销售给其他订阅客户端设备。
应用(238)使用消息库(248)来处理包含在应用消息(240)中的数据。消息库(248)是包含一组功能的软件模块,所述功能用于根据安装在馈送适配器(208)和订阅客户端设备(210)两者上的消息模型(244)来创建、访问和操纵消息(240)。应用(238)可通过消息库(248)暴露的消息API(250)来访问消息库(248)。
订阅客户端设备(210)与流管理服务器(212)之间的通信可以使用流管理库(272)来实现。流管理库(272)是一组包含在动态链接库或静态链接库中的功能,所述库通过流管理库API(274)而可用于应用(238)。通过流管理库(272),图2的订阅客户端设备(210)可以请求订阅来自馈送适配器的消息、修改现有的消息订阅或取消订阅。流管理库(272)包括一组用于根据本发明的实施例在消息传送环境中订阅应用消息的计算机程序指令。流管理库(272)通常通过以下操作来根据本发明的实施例在消息传送环境中订阅应用消息:请求流管理服务器(212)初始化来自消息发送设备(208)的应用消息的消息订阅,在消息接收设备中从流管理服务器(212)接收来自消息发送设备(208)的多播消息流(280)的数据通信端点,在数据通信端点处开始监听应用消息,以及在开始监听应用消息之后,通知消息发送设备(208)在数据通信端点处发布应用消息。当流管理库(272)接收数据通信端点时,流管理库(272)除了接收数据通信端点以外,还可以接收一个或多个备选数据通信端点。
流管理库(272)也通常通过以下操作来根据本发明的实施例在消息传送环境中订阅应用消息:通知消息发送设备在数据通信端点处停止发布应用消息,请求流管理服务器关闭消息订阅。由应用(238)使用的流管理库(272)的功能可以通过调用CORBA对象的成员方法、使用Java远程方法调用(“RMI”)API调用远程对象的成员方法、使用Web服务,或本领域的技术人员将想到的任何其他通信实施方式来通过网络(200)与流管理服务器(212)通信。
“CORBA”指公共对象请求代理体系结构,其是对象管理组(“OMG”)提出的用于可互操作企业应用的计算机工业规范。CORBA是由OMG于1991年首次发布的用于远程过程调用的标准。CORBA可以被认为是一种进行远程过程调用的面向对象的方法,尽管CORBA支持在传统RPC中并不存在的特性。CORBA使用说明性语言(接口定义语言(“IDL”))来描述对象的接口。IDL中的接口描述被编辑以生成用于客户端侧的“存根”和用于服务器侧的“构架”。使用此生成的代码,在面向对象的编程语言(如C++或Java)中实现的远程方法调用看起来像本地对象中的本地成员方法的调用。
JavaTM远程方法调用API是用于执行由Sun MicrosystemsTM发布的远程过程调用的Java应用编程接口。JavaTM RMI API是一种在存在于单独JavaTM虚拟机(通常在单独的计算机上运行)中的Java对象之间进行远程过程调用的面向对象的方法。JavaTM RMI API使用远程过程对象接口来描述位于服务器上的远程对象。在RMI注册表(其中Java客户端可以获得对远程Java对象的远程接口的引用)中发布远程过程对象接口。通过使用编辑的用于客户端侧的“存根”和用于服务器侧的“构架”来提供网络连接操作,JavaTM RMI允许Java客户端像任何其他本地Java对象那样来访问远程Java对象。
在应用(238)处理包含在应用消息(240)中的数据之前,应用(238)从消息传送中间件(252)接收消息(240),消息传送中间件(252)又通过传输引擎(256)从馈送适配器(208)接收应用消息(240)。消息传送中间件(252)是在订阅客户端设备(210)、馈送适配器(208)、任何备用馈送适配器,以及流管理模块(212)之间提供高可用性服务的软件组件。消息传送中间件(252)通过从流管理库(272)接收消息流(280)的数据通信端点和一个或多个备选端点来提供此类高可用性服务。消息传送中间件(252)包括一组用于通过以下操作来根据本发明的实施例在多播消息传送环境中订阅应用消息的计算机程序指令:标识数据通信端点的故障状况,以及响应于所述故障状况,从在数据通信端点处监听应用消息切换至在备选数据通信端点之一处监听应用消息。应用(238)和流管理库(272)通过消息传送中间件API(254)来与消息传送中间件(252)交互。
图2的传输引擎(256)是工作在由国际标准化组织提出的OSI协议堆栈的传输和网络层中的软件组件。传输引擎(256)在联网设备之间提供数据通信服务。可以根据UDP/IP协议、PGM协议或本领域技术人员想到的任何其他数据通信协议来实现传输引擎。传输引擎(256)是用于从馈送适配器(208)接收应用消息(240)的软件组件。传输引擎(256)通过以下操作来接收应用消息(240):通过消息流(280)从馈送适配器(208)接收传输分组,从接收的分组中解封装应用消息(240),以及向订阅客户端设备(210)的消息传送中间件(252)提供应用消息(240)。在图2的实例中,消息传送中间件(252)通过传输引擎(256)暴露的传输API(258)来操作传输引擎(256)。
在图2的示例性系统中示出的服务器和其他设备是用于说明而非进行限制。用于在多播消息传送环境中订阅应用消息的设备可以使用通用计算机来实现,例如,计算机服务器或工作站、手持计算机设备如个人数字助理(“PDA”)或移动电话,或本领域技术人员所想到的任何其他根据本发明实施例的用于数据处理的自动化计算机器。
构成图2中所示的示例性系统的服务器和其他设备的布置是用于说明而非进行限制。尽管到图2的网络(200)的连接是以有线连接来示出和描述的,但是读者将注意到,根据本发明的各种实施例,还可以使用无线连接。此外,用于根据本发明的各种实施例的数据处理系统可以包括本领域技术人员将想到的未在图2中示出的额外服务器、路由器、其他设备和对等体系结构。此类数据处理系统中的网络可以支持多种数据通信协议,包括例如传输控制协议(“TCP”)、网际协议(“IP”)、超文本传输协议(“HTTP”)、无线接入协议(“WAP”)、手持设备传输协议(“HDTP”)以及其他本领域技术人员将想到的协议。除了图2中示出的以外,本发明的各种实施例还可以在多种硬件平台上实现。
在一些实施例中,根据本发明的在多播消息传送环境中订阅应用消息可以使用一个或多个消息接收没备、流管理服务器和消息发送设备来实现。这些设备和服务器又在某种程度上至少可以作为计算机(即,自动化计算机器)来实现。因此,为了进一步说明,图3示出了根据本发明的实施例的包括在多播消息传送环境中订阅应用消息中使用的示例性消息接收设备(300)的自动化计算机器的方块图。图3的消息接收设备(300)包括至少一个计算机处理器(156)或“CPU”,以及随机存取存储器(168)(“RAM”),随机存取存储器(168)通过高速存储器总线(166)和总线适配器(158)连接到处理器(156)和消息接收设备的其他组件。
存储在RAM(168)中的是应用(238)、消息(240)、消息模型(244)、消息库(248)、消息传送中间件(252)、流管理库(272)和传输引擎(256)。每个应用消息(240)都是一定量的包括一个或多个数据字段的数据,并在消息流上从一个设备发送至另一个设备。如上所述,消息可以代表数字或文本信息、图像、加密信息、计算机程序指令等。例如,在金融市场数据环境中,消息通常被称为“行情”并代表诸如金融报价或金融新闻之类的金融市场数据。可以使用结构化文档(如XML文档)、Java对象、C++对象或任何其他本领域技术人员将想到的实施方式来实现每个应用消息(240)。消息模型(244)是定义消息(240)的结构和格式的元数据。消息模型(244)也可以使用结构化文档(如XML文档)、Java对象、C++对象或任何其他本领域技术人员将想到的实施方式来实现。图3所示的应用(238)、消息库(248)、消息传送中间件(252)、流管理库(272)和传输引擎(256)是软件组件,所述软件组件是如上所述根据图2的订阅客户端设备工作的计算机程序指令。
RAM(168)中还存储了操作系统(154)。根据本发明实施例的在消息接收设备中使用的操作系统包括UNIXTM,LinuxTM,Microsoft NTTM,IBM的AIXTM,IBM的i5/OSTM以及本领域技术人员将想到的其他操作系统。图3的实例中的操作系统(154)、应用(238)、消息(240)、消息模型(244)、消息库(248)、消息传送中间件(252)和传输引擎(256)示为在RAM(168)中,但是此类软件的许多组件通常还存储在非易失性存储器中,例如存储在盘驱动器(170)上。
图3的示例性消息接收设备(300)包括总线适配器(158)、包含用于高速总线的驱动电子设备的计算机硬件组件、前端总线(162)、视频总线(164)和存储器总线(166),以及用于较慢的扩展总线(160)的驱动电子设备。根据本发明实施例的用于消息接收设备的总线适配器的实例包括Intel北桥、Intel存储器控制器集线器、Intel南桥以及Intel I/O控制器集线器。根据本发明实施例的用于消息接收设备中的扩展总线的实例可以包括外围组件互连(“PCI”)总线和PCI Express(“PCIe”)总线。
图3的示例性消息接收设备(300)还包括盘驱动器适配器(172),其通过扩展总线(160)和总线适配器(158)与示例性消息接收设备(300)的处理器(156)和其他组件相连。盘驱动器适配器(172)以盘驱动器(170)的方式将非易失性数据存储装置连接到示例性消息接收设备(300)。用于消息接收设备中的盘驱动器适配器包括集成驱动器电子设备(“IDE”)适配器、小型计算机系统接口(“SCSI”)适配器,以及本领域技术人员将想到的其他适配器。另外,对于消息接收设备,非易失性计算机存储器可以实现为光盘驱动器、电可擦除可编程只读存储器(所谓的“EEPROM”或“闪速”存储器)、RAM驱动器等,如本领域的技术人员将想到的。
图3的示例性消息接收设备(300)包括一个或多个输入/输出(“I/O”)适配器(178)。消息接收设备中的I/O适配器通过例如软件驱动器和计算机硬件来实现面向用户的输入/输出,以便控制到显示设备(如计算机显示屏)的输出以及来自用户输入设备(181)(如键盘和鼠标)的用户输入。图3的示例性消息接收设备(300)包括视频适配器(209),后者是专用于向显示设备(180)(如显示屏或计算机监视器)进行图形输出的I/O适配器的一个实例。视频适配器(209)通过高速视频总线(164)、总线适配器(158)和前端总线(162)(其也是高速总线)连接到处理器(156)。
图3的示例性消息接收设备(300)包括用于与其他计算机(182)进行数据通信以及与高速低等待时间数据通信网络(200)进行数据通信的通信适配器(167)。可以串行地通过RS-232连接、通过如通用串行总线(“USB”)之类的外部总线、通过如IP数据通信网络之类的数据通信网络以及本领域技术人员将想到的其他方式来实现此类数据通信。通信适配器实现硬件级别的数据通信,通过通信适配器,一台计算机直接地或通过数据通信网络向另一台计算机发送数据通信。用于根据本发明实施例的在多播消息传送环境中订阅应用消息的通信适配器的实例包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的IEEE 802.3以太网适配器,以及用于无线数据通信网络通信的IEEE 802.11b适配器。
尽管参考示例性消息接收设备讨论了图3,但是读者应注意到,用于实现根据本发明实施例的用于在多播消息传送环境中订阅应用消息的示例性流管理服务器和示例性消息发送设备的自动化计算机器与图3的示例性消息接收设备(300)是类似的。也就是说,此类示例性流管理服务器和馈送适配器包括一个或多个处理器、总线适配器、总线、RAM、视频适配器、通信适配器、I/O适配器、盘驱动器适配器以及其他本领域技术人员将想到的与图3的示例性消息接收设备(300)类似的组件。
为了进一步说明,图4是示出了根据本发明的实施例的在多播消息传送环境中订阅应用消息的示例性方法的流程图。图4的方法包括由消息接收设备请求流管理服务器(400)初始化来自消息发送设备的应用消息的消息订阅。消息接收设备可以通过向流管理服务器发送订阅初始化请求(402)来请求(400)流管理服务器初始化来自消息发送设备的应用消息的消息订阅。订阅初始化请求(402)可以作为XML文档、对消息接收设备上的RMI对象的成员方法调用,或任何其他本领域技术人员将想到的实施方式来实现。例如,考虑以下实现为RMI对象的成员方法的示例性订阅初始化请求:
endpoint*initialize_subscription(string topic);
示例性功能“initialize_subscription”,指示流管理服备器初始化应用消息(具有由“topic”的值定义的特性)的消息订阅。示例性功能“initialize_subscription”向计算机存储器地址(该处存在代表数据通信端点的数据结构)返回指针。读者应注意,上述示例性功能是为了说明而不是进行限制。实际上,本领域技术人员将想到的其他示例性功能也可以用于根据本发明实施例的在多播消息传送环境中订阅应用消息。
图4的订阅初始化请求(402)包括消息接收设备请求从消息发送设备接收的应用消息的主题(414)。主题代表消息接收设备请求接收的消息的特性。每个应用消息通常都包括描述包含在应用消息中的信息的主题数据字段。通过使用主题,消息接收设备可以指定该消息接收设备请求从消息发送设备接收的消息的组。例如,在金融市场数据环境中,消息接收设备可以使用主题来请求从OPRA馈送源接收行情,该行情包含在芝加哥期权交易所(“CBOE”)上交易的IBM期权的报价,其包括在CBOE上的IBM期权的最佳买卖价格。
图4的订阅初始化请求(402)还包括用于消息接收设备的安全证书(416)。作为初始化消息订阅的一部分,流管理服务器通常对消息接收设备的身份进行认证,并判定消息接收设备是否被授权接收所请求的应用消息。安全证书(416)可以实现为公共密钥基础设施中的数字签名、安全令牌或本领域技术人员将想到的任何其他用于对订阅初始化请求(402)的发起者的身份进行认证的安全数据。安全令牌的实例可以包括在由IBM,Microsoft和VeriSign开发的名为“Web服务安全”(“WS-Security”)的Web服务规范或由IBM,Microsoft,VeriSign,OpenNetworks,Layer7,Computer Associates,BEA,Oblix,Reactivity,RSA Security,PingIdentity和Actional开发的名为“Web服务信任语言”(“WS-Trust”)的Web服务规范中描述的那些安全令牌。
如果流管理服务器判定消息接收设备被授权接收所请求的应用消息,则流管理服务器然后可以继续对订阅初始化请求(402)中指定的应用消息的消息订阅进行初始化。也就是说,流管理服务器可以创建或修改流管理服务器中用于管理消息订阅的数据结构,并在流管理服务器上启动用于执行消息订阅管理的过程。流管理服务器还可以标识和操纵用于管理消息发送设备的服务提供方,从一个或多个消息发送设备获得网络地址(消息发送设备将向其发送在订阅初始化请求(402)中指定的应用消息),以及执行任何其他本领域技术人员将想到的订阅初始化。
图4的方法还包括在消息接收设备中从流管理服务器接收(404)来自消息发送设备的多播消息流的数据通信端点(406)。数据通信端点(406)代表包括网络地址(消息接收设备可以在该处监听来自消息发送设备的应用消息)的数据结构。如上所述,流管理服务器通常获取消息接收设备可以在该处监听来自消息发送设备的应用消息的网络地址。图4的通信端点(406)可以根据UDP/IP协议、PGM协议或任何其他本领域技术人员将会想到的数据通信协议来实现。
图4的方法还包括由消息接收设备开始在数据通信端点(406)处监听(408)应用消息。消息接收设备可以通过调用安装在消息接收设备(开始在端点(406)处监听应用消息)上的传输引擎的传输引擎API的功能,来开始根据图4的方法在数据通信端点(406)处监听(408)应用消息。考虑以下用于根据本发明实施例在多播消息传送环境中订阅应用消息的示例性功能:
buffer*transport_listen (int endpoint_ID);
示例性功能“transport_listen”指示消息接收设备的传输引擎在由“endpoint_ID”的值标识的数据通信端点处监听应用消息。示例性功能“transport_listen”返回计算机存储器中用于缓冲器的地址,传输引擎将通过数据通信端点接收的应用消息放置在该缓冲器中。读者将注意到,上述示例性功能是为了说明而不是为了进行限制。实际上,本领域技术人员将想到的其他示例性功能也可以用于根据本发明实施例的在多播消息传送环境中订阅应用消息。
图4的方法还包括在开始监听应用消息之后,由消息接收设备通知(410)消息发送设备在数据通信端点处发布应用消息。在开始监听应用消息之后,消息接收设备可以通过向流管理服务器发送消息发布通知(412),来通知(410)消息发送设备根据图4的方法在数据通信端点处发布应用消息。流管理服务器随后又可以指示消息发送设备在数据通信端点(406)中指定的网络地址处发布消息。消息发布通知(412)可以实现为XML文档、对消息接收设备上的RMI对象的成员方法的调用,或任何其他本领域技术人员将想到的实施方式。读者将注意到,在消息接收设备开始监听应用消息之后通知消息发送设备发布应用消息,有利地确保了消息接收设备不会丢失在初始化订阅后发送的第一个消息。
通常在多播消息传送环境中,会在消息发送设备上产生故障,这会阻止设备正确地向消息接收设备发送应用消息。当发生此类故障时,消息接收设备可以从在一个数据通信端点处监听来自故障消息发送设备的应用消息切换为在备选数据通信端点处监听来自另一个消息发送设备的应用消息。因此,为了进一步说明,图5是示出了根据本发明实施例的在多播消息传送环境中订阅应用消息的进一步示例性方法的流程图,所述方法包括响应于故障状况(506),消息接收设备从在数据通信端点(406)处监听应用消息切换为(508)在备选数据通信端点(502)处监听应用消息。
图5的方法与图4的方法类似。也就是说,图5的方法包括:消息接收设备请求(400)流管理服务器初始化来自消息发送设备的应用消息的消息订阅;在消息接收设备中从流管理服务器接收(404)来自消息发送设备的多播消息流的数据通信端点(406);消息接收设备开始在数据通信端点处监听(408)应用消息;以及在开始监听应用消息之后,由消息接收设备通知(410)消息发送设备在数据通信端点处发布应用消息。图5的实例还与图4的实例的类似之处在于,图5的实例包括订阅初始化请求(402)和消息发布通知(412)。
在图5的方法中,从消息发送设备接收(404)多播消息流的数据通信端点(406)包括除了接收数据通信端点以外,还接收(500)一个或多个备选数据通信端点(502)。每个备选数据通信端点(502)都代表包括网络地址的数据结构,消息接收设备将在所述地址处监听来自备选消息发送设备的应用消息。如上所述,流管理服务器通常获取消息接收设备可以在该处监听来自备选消息发送设备的应用消息的网络地址。图4的数据通信端点(406)可以根据UDP/IP协议、PGM协议或任何其他本领域技术人员将想到的数据通信协议来实现。
图5的方法还包括由消息接收设备标识(504)数据通信端点(406)的故障状况(506)。故障状况(506)代表数据通信终端(406)的一组约束,其指示消息接收设备何时应切换至备选端点(502)。例如,如果在一段预定时间之后,没有从端点(406)接收到消息,则故障状况(506)可以指定消息接收设备应切换到备选端点。为了进一步说明,当消息接收设备从消息发送设备接收到故障通知消息时,故障状况(506)可以指定消息接收设备应切换至备选端点。消息接收设备可以通过定期判定是否出现数据通信端点(406)的故障状况(506)的约束条件,来根据图5的方法确定(504)数据通信端点(406)的故障状况(506)。如果出现故障状况(506)的任何约束条件,则消息接收设备确定了故障状况(506)。
图5的方法还包括响应于故障状况(506),消息接收设备从在数据通信端点(406)处监听应用消息切换为(508)在备选数据通信端点(502)之一处监听应用消息。所述消息接收设备可以通过以下操纵来根据图5的方法从在数据通信端点(406)处监听应用消息切换(508)为在备选数据通信端点(502)之一处监听应用消息:调用来自安装在消息接收设备上的传输引擎的传输引擎API的功能,所述功能停止在端点(406)处监听应用消息并开始在备选端点(502)之一处监听应用消息。例如,考虑以下示例性的用于根据本发明实施例在多播消息传送环境中订阅应用消息的功能:
void transport_stop_listen(int endpoint_ID);
buffer*transport_listen(int endpoint_ID);
示例性功能“transport_stop_listen”指示消息接收设备的传输引擎停止在由“endpoint_ID”的值标识的数据通信端点处监听应用消息。如上所述,示例性功能“transport_listen”指示消息接收设备的传输引擎在由“endpoint_ID”的值标识的数据通信端点处监听应用消息。示例性功能“transport_listen”返回计算机存储器中用于缓冲器的地址,传输引擎将通过数据通信端点接收的应用消息放置在该缓冲器中。读者将注意到,上述示例性功能是为了说明而不是为了进行限制。实际上,本领域技术人员将想到的其他示例性功能也可以用于根据本发明实施例的在多播消息传送环境中订阅应用消息。
在金融市场数据环境中,消息发送设备通常实现为馈送适配器,所述馈送适配器能够将来自馈送源的具有第一格式的应用消息转换为具有第二格式的应用消息,以便传输到诸如订阅客户端设备的消息接收设备。运行馈送适配器的金融成本很大程度上取决于馈送适配器从馈送源接收的应用消息的数量。因此,馈送适配器仅接收该馈送适配器已订阅的应用消息是有利的。这样,馈送适配器监视由馈送适配器发送的每种类型的应用消息的用户数量。因此,为了进一步说明,图6是示出了根据本发明实施例的在多播消息传送环境中订阅应用消息的进一步示例性方法的流程图,所述方法包括响应于接收到发布应用消息的通知(412),消息发送设备增加(602)代表用户对应用消息的兴趣的计算机数据元素的值(604)。
图6的方法与图4的方法类似。也就是说,图6的方法包括:消息接收设备请求(400)流管理服务器初始化来自消息发送设备的应用消息的消息订阅;在消息接收设备中从流管理服务器接收(404)来自消息发送设备的多播消息流的数据通信端点(406);消息接收设备开始在数据通信端点处监听(408)应用消息;以及在开始监听应用消息之后,消息接收设备通知(410)消息发送设备在数据通信端点(406)处发布应用消息。图6的实例还与图4的实例的类似之处在于:图6的实例包括订阅初始化请求(402)和消息发布通知(412)。
图6的方法还包括在消息发送设备中接收(600)发布应用消息的通知(412)。消息发送设备可以通过消息管理服务器从消息发送设备或直接从消息发送设备自身来接收(600)消息发布通知(412)。通常,流管理服务器或消息发送设备通过可管理的数据通信连接来向消息发送设备发送消息发布通知(412),该数据通信连接使用UDP/IP、TCP/IP或任何其他本领域技术人员将想到的数据通信协议来实现。
图6的方法还包括响应于接收到发布应用消息的通知(412),消息发送设备增加(602)代表用户对应用消息的兴趣的计算机数据元素的值(604)。消息发送设备可以根据图6的方法,通过为每个接收的消息发布通知(412)将值(604)递增1来增加(602)值(604)。通过使用值(604),消息发送设备可以监视由设备所发送的应用消息的用户的数量。
图6的方法描述了消息发送设备对接收消息发布通知的响应。现在转到图7:图7描述了消息发送设备对接收到停止发布应用消息的通知的响应。因此,图7是示出了根据本发明实施例的在多播消息传送环境中订阅应用消息的进一步示例性方法的流程图,所述方法包括:消息接收设备通知(700)消息发送设备在数据通信端点处停止发布应用消息。消息接收设备可以通过向流管理服务器发送停止发布通知(702)来根据图7的方法通知(700)消息发送设备在数据通信端点处停止发布应用消息。流管理服务器然后又可以指示消息发送设备停止在数据通信端点中指定的网络地址处发布消息。停止发布通知(702)可以使用XML文档、对消息接收设备上的RMI对象的成员方法的调用,或任何其他本领域技术人员将想到的实施方式来实现。
图7的方法还包括在消息发送设备中接收(704)停止发布应用消息的通知(702)。消息发送设备可以通过消息管理服务器从消息发送设备或直接从消息发送设备自身来接收(704)停止发布通知(702)。通常,流管理服务器或消息发送设备通过可管理的数据通信连接来向消息发送设备发送停止发布通知(702),所述数据通信连接使用UDP/IP、TCP/IP或任何其他本领域技术人员将想到的数据通信协议来实现。
图7的方法包括响应于接收到停止发布应用消息的通知,消息发送设备减小(706)代表用户对应用消息的兴趣的计算机数据元素的值(604)。消息发送设备可以根据图7的方法,通过为每个接收的停止发布通知(412)将值(604)递减1来减小(706)值(604)。
图7的方法还包括由消息发送设备判定(710)代表用户对应用消息的兴趣的计算机数据元素的值(604)是否低于预定阈值(712)。预定阈值(712)代表用于确定消息发送设备应何时通知数据提供者停止提供应用消息的值。通常,将预定阈值(712)设置为1。消息发送设备可以通过将值(604)与预定阈值(712)相比较来判定(710)值(604)是否低于预定阈值(712)。如果值(604)小于预定阈值(712),则值(604)低于预定阈值(712)。如果值(604)大于或等于预定阈值(712),则值(604)不低于预定阈值(712)。
图7的方法包括如果代表用户对应用消息的兴趣的计算机数据元素的值(604)低于预定阈值(712),则消息发送设备通知(714)数据提供者停止向消息发送设备提供应用消息。消息发送设备可以根据图7的方法,通过向数据提供者发送停止数据通知(716)来通知(714)数据提供者停止向数据发送设备提供应用消息。消息发送设备通常通过管理消息流向数据提供者发送停止数据通知(716),该管理消息流使用UDP/IP、TCP/IP或任何其他本领域技术人员将想到的数据通信连接来实现。停止数据通知(716)可以作为XML文档、对消息发送设备上的RMI对象的成员方法的调用,或任何其他本领域技术人员将想到的实施方式来实现。读者将注意到,在代表用户对应用消息的兴趣的计算机数据元素的值(604)低于预定阈值(712)的情况下通知(714)数据提供者停止向消息发送设备提供应用消息,有利地防止了消息发送设备要求重传消息接收设备未订阅的应用消息。
图7的方法还包括消息接收设备请求(718)流管理服务器关闭消息订阅,而不管值(604)是否低于预定阈值(712)。消息接收设备可以根据图7的方法,在通知消息发送设备停止发布应用消息之后,请求(718)流管理服务器关闭消息订阅。根据图7的方法的请求(718)流管理服务器关闭消息订阅使流管理服务器能够重新分配任何用于初始化和管理消息接收设备的消息订阅的计算机资源。
消息接收设备可以通过调用安装在消息接收设备上的流管理库的关闭消息订阅的API的功能,而根据图7的方法来请求(718)流管理服务器关闭消息订阅。例如,考虑以下示例性的用于根据本发明实施例在多播消息传送环境中订阅应用消息的功能:
void close_subscription(int subscription_ID);
示例性助能“close_suhscription”指示流管理服务器关闭由“subscription_ID”的值标识的消息订阅。示例性功能“close_subscription”可以是在消息接收设备上实例化的远程Java RMIM对象或CORBA对象的一部分。读者将注意到,上述示例性功能是用于说明而不是进行限制。实际上,本领域技术人员将想到的其他示例性功能也可以用于根据本发明的实施例在多播消息传送环境中订阅应用消息。
鉴于本文的上述说明,读者将认识到,根据本发明实施例的在多播消息传送环境中订阅应用消息将提供以下益处:
·在多播消息传送环境中初始化订阅后,防止消息接收设备丢失所发送的第一个消息的增强的能力,以及
·防止消息发送设备要求重传消息发送设备未订阅的应用消息的能力。
主要在用于在多播消息传送环境中订阅应用消息的完整功能计算机系统的上下文中描述了本发明的示例性实施例。但是,本领域的读者将认识到,本发明也可以包含在计算机程序产品中,所述计算机程序产品布置在与任何适当数据处理系统一起使用的信号承载介质上。此类信号承载介质可以是用于机器可读信息的传输介质或可记录介质,包括磁介质、光介质或其他合适的介质。可记录介质的实例包括硬盘驱动器中的磁盘或软盘、用于光学驱动器的光盘、磁带和本领域技术人员将想到的其他介质。传输介质的实例包括用于语音通信的电话网和数字数据通信网络,例如EthernetsTM和使用网际协议和万维网通信的网络,以及无线传输介质,例如根据IEEE 802.11规范族实现的网络。本领域的技术人员将立即认识到,任何具有合适的编程装置的计算机系统都能够执行包含在程序产品中的本发明的方法的步骤。本领域的技术人员将很快认识到,尽管在说明书中描述的一些示例性实施例面向安装在计算机硬件上并在其上执行的软件,但是作为固件或硬件实现的备选实施例也在本发明的范围之内。
从前面的描述应当理解,可以对本发明的各个实施例进行修改和更改而不偏离本发明的真实精神。本说明书中的描述只是出于示例并且不应在限制的意义上理解。本发明的范围仅由以下权利要求的语言来限定。