用于分发发布-订阅消息的方法和装置

文档序号:1510743 发布日期:2020-02-07 浏览:2次 >En<

阅读说明:本技术 用于分发发布-订阅消息的方法和装置 (Method and apparatus for distributing publish-subscribe messages ) 是由 C·多纳 于 2017-10-06 设计创作,主要内容包括:用于使用消息代理器通过网络将发布-订阅消息分发到客户端的方法和装置。第一客户端被配置成向消息代理器发送消息,以将第二客户端声明为其继任者。消息代理器被配置成当第一客户端与消息代理器断开连接时,将被指示为传递到第一客户端的一个或多个消息路由到第二客户端。第二客户端然后可以取代第一客户端接收和处理这些消息。(Methods and apparatus for distributing publish-subscribe messages to clients over a network using a message broker. The first client is configured to send a message to the message broker to declare the second client as its successor. The message broker is configured to route one or more messages indicated as delivered to the first client to the second client when the first client is disconnected from the message broker. The second client may then receive and process these messages in place of the first client.)

用于分发发布-订阅消息的方法和装置

技术领域

本公开涉及用于使用消息代理器通过网络将发布-订阅消息分发到客户端的方法和装置。

背景技术

通信系统可以被看作通过提供用于在两个或更多个设备之间携带信息的通信信道来实现在两个或更多个设备(诸如用户装备、机器状终端、服务器或其它节点)之间通信的设施。可以例如通过通信网络和一个或多个兼容的通信设备来提供通信系统。通信可以包括例如用于携带语音数据的数据、电子邮件(电子邮件(email))、文本消息、多媒体和/或内容数据通信等的通信。

可以实现用于在设备之间交换消息的一个特定模型是发布-订阅模式。

发明内容

根据第一方面,提供了用于使用消息代理器通过网络向客户端分发发布-订阅消息的方法,该方法包括:消息代理器,从第一客户端接收将第二客户端识别为第一客户端的继任者的消息;确定第一客户端与消息代理器断开连接;并且响应于确定第一客户端与消息代理器断开连接,消息代理器将被识别为用于传输到第一客户端的一个或多个消息路由到第二客户端。

在一些示例中,确定第一客户端与消息代理器断开连接包括确定第一客户端与消息代理器不当地断开连接。

在一些示例中,一个或多个消息是消息队列遥感传输消息。

在一些示例中,方法包括,在从第一客户端接收识别第二客户端的消息之前,从第二客户端接收消息,该消息指示用于接收被识别为传输到其它客户端的消息的第二客户端的可用性;并且向第一客户端发送用于接收旨在传输到第一客户端的一个或多个消息的第二客户端的可用性的指示。

在一些示例中,来自第二客户端的消息包括第二客户端的供应商ID,并且响应于确定第二客户端的供应商ID与第一客户端的供应商ID匹配而执行向第一客户端发送第二客户端的可用性的指示。

在一些示例中,方法包括:响应于从第一客户端接收轮询消息以对一个或多个客户端进行轮询以确定该一个或多个客户端用于接收旨在传输到第一客户端的一个或多个消息的可用性,向第一客户端发送第二客户端的可用性的指示。

在一些示例中,一个或多个消息通过第一客户端对一个或多个消息的类别的订阅的指示被识别为用于传输到第一客户端,其中,指示由消息代理器存储。

在一些示例中,来自第一客户端的识别第二客户端的消息包括第二客户端的媒体访问控制地址。

根据第二方面,提供了用于控制向客户端发布-订阅消息的分发的方法,该方法包括:第一客户端向消息代理器发送消息,该消息将第二客户端识别为第一客户端的继任者,该消息包括对消息代理器的指令以响应于消息代理器确定第一客户端与消息代理器断开连接而将被识别为传输到第一客户端的一个或多个消息路由到第二客户端。

根据第三方面,提供了包括指令的计算机程序,以使得当在计算设备上执行计算机程序时,计算设备被布置成执行第一或第二方面的步骤。

根据第四方面,提供了消息代理器,该消息代理器被配置成将发布-订阅消息分发到客户端,消息代理器包括至少一个处理器和包括计算机程序代码的至少一个存储器,该至少一个存储器和计算机程序代码与至少一个处理器一起被配置成使得消息代理器至少:确定消息代理器的第一客户端与消息代理器断开连接;并且响应于确定第一客户端与消息代理器断开连接而将被识别为传输到第一客户端的一个或多个消息路由到第二客户端,第二客户端在来自第一客户端的识别第二客户端的消息中被识别为第一客户端的继任者。

根据第五方面,提供了第一客户端设备,该第一客户端设备被配置成控制向客户端的发布-订阅消息的分发,第一设备包括至少一个处理器和包括计算机程序代码的至少一个存储器,该至少一个存储器和计算机程序代码与至少一个处理器一起被配置成使得第一客户端至少:向消息代理器发送消息,该消息将第二客户端识别为第一客户端的继任者,该消息包括对消息代理器的指令以响应于消息代理器确定第一客户端与消息代理器断开连接而将被识别为传输到第一客户端的一个或多个消息路由到第二客户端。

附图说明

为了辅助理解本公开并且为了示出示例是如何生效的,通过示例的方式参考附图,其中:

图1示意性地示出发布-订阅通信系统的示例;

图2示意性地示出通信设备的示例;

图3示意性地示出发布-订阅通信系统的示例;

图4示出存储在消息代理器中的与客户端相关的数据的示例;

图5示出根据本公开的示例在消息代理器处执行的示例方法;

图6示出根据本公开的示例在第一客户端处执行的示例方法;

图7示出根据本公开的示例在第二客户端处执行的示例方法;以及

图8示意性地示出发布-订阅通信系统的示例。

具体实施方式

在本说明书中,为了方便起见并按照惯例,将参考“客户端”、“发布者”、“订阅者”、“消息代理器”等,应理解,除非上下文另有要求,否则这是指“客户端设备”、“发布者设备”、“订阅者设备”、“消息代理器设备”等。

如前所述,可以实现用于在设备之间交换消息的一个特定模型是所谓的发布-订阅模式。在这里,发送消息的客户端不会像在许多通信系统中常见的那样,通过对要被直接发送到特定接收器的消息进行编程这样做。反而,当已知作为发布者的客户端发送消息时,该客户端对具有该消息所属的特定“类别”(或“主题”)的指示的要被发送的消息进行编程。消息由发布者发送到消息代理器,该消息代理器包括已知作为订阅者的注册了由发布者发送的消息的特定类别的订阅的所有客户端的列表。然后消息代理器将消息发送到被指示为该类别的订阅者。为了注册消息的特定类别的订阅,客户端可以将订阅消息发送到消息代理器,然后该消息代理器将存储客户端订阅了接收该类别的消息的指示,并且将从发布者接收的任何未来消息转发到客户端。

经常被用于基于发布-订阅消息传递的一个协议是消息队列遥感传输(MQTT)协议,该协议是用于在TCP/IP协议顶部使用的轻量级消息传递协议。MQTT被特别地设计用于约束设备和低带宽、高延迟或不可靠的网络。设计原则是最小化网络带宽以及设备资源需求,同时还尝试确保可靠性和一定程度的传递保证。这些原则也证明是使协议对于连接设备的新兴的“机器对机器”(M2M)或“物联网”世界以及对于带宽和电池电力非常宝贵的移动应用是理想的。

通常,如本文中使用的,IoT设备是具有可寻址的接口(例如,互联网协议(IP)地址、蓝牙标识符(ID)、近场通信(NFC)ID等)并且能够通过有线或无线连接向一个或多个其它设备发送信息的设备。IoT设备通常可以包括或被并入到例如冰箱、烤箱、微波炉、冷冻箱、洗碗机、洗衣机、干衣机、熔炉、空调、恒温器、电视和其它消费电子设备、灯具、吸尘器、洒水器、电表、煤气表等。IoT设备可能部署在没有干线电源或IoT设备可能不适合干线电源的位置或情况下,包括例如在IoT设备是用于温度、湿度、压力、光级度、污染度等的传感器的情况下。

在一些情况下,在发布-订阅系统中,客户端可能与消息代理器不当地断开连接。然而,消息代理器可能仍接收不当地断开连接的客户端所订阅的类别的消息。消息代理器可以简单地丢弃旨在用于客户端的这些信息。然而,这些信息然后将未经处理。

在详细说明示例之前,参考图1和图2简短说明发布订阅通信系统和合适的通信设备的某些一般原理,以辅助理解下面描述的示例的技术。

图1示出发布/订阅通信系统。消息代理器102具有其用于与多个客户端设备104、106、108、110通信的接口112。消息代理器102可以例如是服务器。接口112可以包括收发器装置,该收发器装置被配置成通过有线和/或无线电接口从客户端设备接收信号并且通过有线和/或无线电接口向客户端设备发送信号。对于无线连接,收发器装置可以包括例如无线电部分和相关联的天线布置。天线布置可以布置到消息代理器内部或外部。

接口112可以包括输入机制,该输入机制可以例如是输入队列或同步输入节点,当消息通过客户端设备被发送到消息代理器时消息通过该输入队列或同步输入节点输入。发布的消息由控制器114从输入机制提取并且除了其它事情之外,处理以确定该消息应被发送到哪些客户端。这里可以有由消息代理器102向/从其发送并接收消息的多个接口。

由接收到的消息指示的类别提供了在发布者和订阅者之间传送消息(发布)的关键。代理器被配置成将发布的消息上的字符串类别与订阅了接收包括该字符串类别的消息的客户端列表进行匹配。每个消息类别的客户端列表可以被保存在存储器116中。可以在消息代理器中提供匹配引擎118以将匹配字符串类别匹配到客户端。当客户端设备注册为订阅者时,该客户端设备可以指定其想要的接收消息的方式(可以是队列或其它输入机制)和其有兴趣接收的消息类别的指示。

在一个示例中,客户端设备可以发送订阅请求消息,该订阅请求消息指定其希望接收包括诸如“温度”、“压力”、“湿度”、“发光强度”等之类别的字符串类别的消息。消息代理器可以在接口处接收这样的消息,并且在控制器处处理该消息以确定针对字符串类别“温度”注册的客户端设备列表应在存储器116中被更新。控制器被配置成向存储器116进行写入以更新针对该类别字符串类别注册的客户端设备的列表。

假设客户端104、110然后被订阅以接收类别“温度”的消息或者客户端106(在这种情况下是发布者)将类别“温度”的消息发送到消息代理器,该消息代理器在接口处接收该消息。匹配引擎118将类别“温度”与注册为该类别的订阅者的客户端列表进行匹配,因此,确定客户端设备104、110被注册为订阅者。控制器然后可以处理消息以例如通过***适当的头文件对要被转发到客户端设备104、110的消息进行编程。然后接口将消息的副本发送到客户端设备104、110。本领域的技术人员将意识到虽然客户端设备106被呈现为发布者,但是其也可以充当一个或多个类别的信息的订阅者。另外,将意识到虽然客户端设备104、110被呈现为订阅者,但是其也可以充当一个或多个类别的信息的发布者。

现在将参考图2更详细地描述示例客户端设备,图2示出了无线通信设备200的示意性的部分截面图。

客户端设备200可以是例如移动设备(即,没有固定到特定位置的设备),或者可以是固定设备。无线设备可能需要人类交互通信或者可能不需要人类交互通信,例如是MTC设备。

客户端设备200可以经由用于接收的合适的装置通过空气或无线电接口207来接收信号,并且可以经由用于发送无线电信号的合适的装置来发送信号。在图2中,可以包括收发器装置的接口由块206示意性地标出。可以例如通过无线电部分和相关联的天线布置来提供收发器装置。天线装置可以布置到无线设备内部或外部。在一些示例中,接口可以是通过金属线或光纤来发送和接收数据的有线接口。

客户端设备200通常设置有至少一个数据处理实体201、至少一个存储器202和其它可能的组件203。其它组件203可以包括诸如温度传感器、压力传感器、光强度传感器等之类的传感器,以对客户端设备200进行测量。其它组件203还可以包括致动器,客户端设备200可以使用该致动器来执行真实世界任务。数据处理、存储和其它相关的控制装置可以设置在合适的电路板上和/或芯片组中。用户可以通过诸如键盘205、语音命令、触敏屏幕或触摸板、其组合等之类的适当的用户接口来控制客户端设备的操作。还可以提供显示器208和扬声器。另外,无线通信设备可以包括到其它设备和/或用于连接外部配件(例如,免提装备)的适当的连接器(有线的或无线的)。

客户端200可以被配置成根据MQTT协议与消息代理器进行通信。接口206可以被配置成根据该协议进行通信。虽然这里给出的客户端设备示例主要地呈现为无线通信设备,但是应当意识到,在其它示例中,客户端设备可以使用诸如金属线或光纤之类的其它方式来与消息代理器进行通信。

再次参考图1,当诸如客户端设备108之类的客户端设备不当地与消息代理器断开连接时,可能出现问题。为了解释该问题,适度的断开连接可能是客户端在断开连接之前将断开连接消息发送到消息代理器。另一方面,当消息代理器或客户没有故意地发起断开连接,并且例如在断开连接之前没有发送断开连接消息时,可能出现不当的断开连接。另外,由于网络连接丢失,例如因为客户端设备的电池电力耗尽或一些其它原因,也可能出现不当的断开连接。在这种情况下,消息代理器可以继续接收客户端设备108订阅的类别的消息。消息代理器必须做出决定如何处理被指示传输到客户端设备108的消息。消息代理器可以简单地丢掉这些消息。然而,由于这些消息未由客户端设备处理,所以这可能是不期望的。

针对当客户端设备与消息代理器断开连接时的情况的一个提议是在消息代理器中存储将要被发送到客户端设备的任何消息。当客户端设备重新连接到消息代理器时,消息代理器将存储的消息发送到客户端设备。然而,在这种情况下,直到客户端设备重新连接为止,存储的消息才会被处理。另外,在消息代理器中存储消息需要额外的存储空间。

另一个提议是通过将特定类别/主题发布到客户端来将不当地断开连接的客户端通知其它客户端。这是意外情况的预防措施。然而,该提议未解决如何处理旨在要传输到不当地断开连接的客户端的消息的问题。可以在说明书消息类别上声明指示客户端已断开连接的消息。但是其它客户端将无权访问该主题或没有注意到该主题。

因此,存在当在发布-订阅消息系统中的客户端与消息代理器断开连接时出现的问题,特别是在客户端不当地与消息代理器断开连接的情况下。

在本文中描述的示例中,提供了分发发布-订阅消息的方法,在该方法中,当第一客户端设备与消息代理器断开连接时,消息代理器被配置成将被指示为要传输到第一客户端设备的消息发送到已被指定为第一客户端设备的继任者的第二客户端设备。第一客户端设备可以通过向消息代理器发布特定消息(如以下解释的)来指定第二客户端设备作为继任者。通常可以在MQTT连接的任何阶段来做出该声明。然后,已被指定为第一客户端设备的继任者的第二客户端设备可以从消息代理器接收这些消息并对其进行处理。因此,即使在第一客户端设备重新连接到消息代理器之前,旨在用于第一客户端设备的消息也可以由第二客户端设备接收和处理。因此,由于示例为该消息提供了将断开连接的客户端的消息路由或重新分配到另一个客户端的继承或遗留,所以直到客户端设备重新连接为止,没有必要在消息代理器处存储消息。客户端设备能够在不当的断开连接的情况下自主地重新组织在它们之间的消息流。该定义的继承或遗留机制例如将帮助系统即使发生客户端设备的断开连接也不会丢掉任何紧急数据包。

现在将参考图3解释为第一客户端设备建立继任者的过程的示例。图3示出了在将第二客户端设备302建立为第一客户端设备304的继任者以使得如果第一客户端设备304与消息代理器306断开连接,那么第二客户端设备302可以接收旨在用于第一客户端设备304的消息的期间,在第一客户端设备304与消息代理器306以及在第二客户端设备302和消息代理器306之间交换的消息。将意识到不是所有这些消息都是必要的,并且一些示例可以省略这些消息中的一个或多个。该图中所示的并在本公开中所讨论的客户端设备可以被称为节点。消息代理器306可以是服务器。消息代理器306可以包括多个装置或被分布在多个装置上。例如,消息代理器的功能可以跨多个服务器分布。

第二客户端设备302被配置成向消息代理器发送消息308,该消息308指示第二客户端302用于接收被识别为传输到其它代理器的消息的可用性。换句话说,消息308指示第二客户端设备302作为消息代理器306服务的其它客户端设备的潜在继任者的可用性。术语“继任者”被应用于第二客户端302,这意味着在消息代理器306中将第二代理器302指示为被分配为接收被指示为在第一客户端304与消息代理器306断开连接的情况下传输到第一客户端304的一个或多个消息。在一些情况下,如果第一客户端304不当地断开连接了,那么消息可以仅被路由到第二客户端302。由于在第一客户端设备304断开连接的情况下其消息被路由到其继任者,所以第一客户端设备304可以被称为祖先/继承客户端。

消息308可以被称为通知祖先(notifyAncestor)消息308。消息308可以包括第二客户端设备302的ID以使得消息代理器306能够确定第二客户端设备302的身份,该身份指示了第二客户端设备302作为继任者的可用性。消息308还可以包括第二客户端设备302的供应商的ID。消息代理器可以存储该供应商ID,并且使用该供应商ID以帮助其它客户端设备选择合适的继任者设备,这将在下面解释。由于大多数供应商可以在云系统上使用相同的MQTT代理器,因此调用VENDOR_ID将有利于区别祖先和继任者。在接收到消息308之后,消息代理器306可以存储第二客户端设备302可用作继任者的指示。消息代理器306可以被配置成响应于接收消息308而将确认消息(ACK)发送到第二客户端设备302。

第一客户端设备304被配置成将消息310发送到消息代理器306,该消息对消息代理器306进行轮询以获得第一客户端设备302的继任者客户端。该轮询消息可以在特殊主体/类别上发送。消息310可以被称为订阅继任者(subscribeSuccessors)消息。消息310可以包括第一客户端设备304的供应商的ID。消息代理器306被配置成接收消息310并且确定第一客户端设备304的一个或多个潜在继任者。第一客户端304的潜在继任者是可用于在第一客户端不当地与消息代理器306断开连接的情况下接收旨在传输到第一客户端设备304的一个或多个消息的一个继任者。如果客户端设备指示了其作为潜在继任者的可用性,那么消息代理器306可以仅确定该客户端设备是潜在继任者。在这个示例中,由于第二客户端302发送了指示其作为继任者的可用性的消息308,所以第二客户端302可以被包括在一个或多个潜在继任者中。消息代理器306可以被配置成响应于接收消息310而将确认消息(ACK)发送到第一客户端设备304。

消息代理器306可以通过将第一客户端设备304的供应商ID与其它客户端的供应商ID进行匹配以确定匹配来确定第一客户端设备304的合适的继任者。在一些示例中,如果客户端拥有相同的供应商ID,那么客户端可以仅用作另一客户端的继任者。由于不同的制造商可能具有不同的消息处理实现,所以可能期望这样做以便确保继任者不是来自与第一客户端设备304不同的制造商。因此,消息代理器306可以取决于在第一客户端设备304的供应商ID与一个或多个继任者的供应商ID之间找到的匹配来确定第一客户端设备304的一个或多个的潜在继任者。在这个示例中,第一客户端304和第二客户端302可以具有相同的供应商ID以使得第二客户端302被确定为第一客户端304的潜在继任者。

当消息代理器为第一客户端确定了一个或多个潜在继任者时,消息代理器被配置成将消息312发送到第一客户端,该消息312包括一个或多个潜在继任者的指示。该消息312可以被称为继任者数据(successorData)消息。消息312可以包括一个或多个潜在继任者中的每个的ID。一个或多个潜在继任者中的每个的ID可以包括一个或多个潜在继任者中的每个的MAC地址。

然后第一客户端设备304可以从消息代理器306向其指示的一个或多个潜在继任者中选择继任者。第一客户端设备304例如可以选择第二客户端302作为继任者。然后第一客户端设备304可以将消息314发送到消息代理器306,该消息314指示要被设置为第一客户端设备304的继任者的客户端设备。可以在连接阶段声明该消息。消息314可以是设置继任者(setSuccessor)消息。响应于接收消息314,消息代理器306可以被配置成将确认消息(ACK)发送到第一客户端设备304。消息314可以包括第二客户端设备314的供应商的ID和第二客户端设备314的ID。消息代理306接收消息314并且存储第二客户端设备302是第一客户端设备304的继任者的指示。然后,当第一客户端设备304与消息代理器306断开连接时,消息代理器306可以将旨在传输到第一客户端304的一个或多个消息发送到第二客户端302。第二客户端302可以接收这些一个或多个消息,并且取代第一客户端304对其进行处理。

因为MQTT协议的面向代理器的消息分发性质,所以不需要将继任者设置(successorSet)消息发送到所有其它客户端。这例如可能只在祖先和继任者之间采集数据。取代将接收到的继任者设置消息广播到所有其它节点,消息代理器将具有用于祖先和继任者的数据库,以确定是将传入消息路由到祖先客户端(即,该示例中的第一客户端)还是路由到继任者客户端(即,该示例中的第二客户端)。

参考图4,其示出了可以存储在消息代理器306中的数据400的示例。第一数据结构402包括一个或多个字段,该一个或多个字段包括关于第一客户端304的信息。第二数据结构404包括一个或多个字段,该一个或多个字段包括关于第二客户端302的信息,该第二客户端302被选择为第一客户端304的继任者。第一数据结构402包括第一客户端304的ID(如图中节点ID(nodeID)所示),这允许第一客户端304在消息代理器与其进行通信的客户端设备中唯一被识别。该ID可以是第一客户端设备304的MAC地址。第一数据结构402还可以包括供应商ID(如图中供应商ID(vendorID)所示)。这识别了第一客户端304的制造商。第一数据结构402可以包括关于第一客户端304是否与消息代理器306连接或断开连接的指示(如图中是否存在(IsAlive)所示)。消息代理器306可以使用该指示来确定是将被指示为发送到第一客户端304的消息发送到第一客户端304(如果该指示示出第一客户端连接到消息代理器)还是发送到继任者,即,第二客户端302(如果该指示示出第二客户端未连接到消息代理器)。当第一客户端设备304不当地与消息代理器断开连接时,消息代理器306被配置成响应于检测到第一客户端设备304不当地断开连接来例如通过将是否存在(IsAlive)字段设置为失败来设置该字段以指示第一客户端304不当地断开连接。

第一数据结构402可以链接到第二数据结构404。两个数据结构可以由“外键”链接。第二数据结构404可以包括第一客户端304的ID(如图中节点ID所示)。该节点ID属性可以由外键链接到第一数据结构402以容易地查询在两个数据结构之间的给定的节点ID。第二数据结构404可以包括第二客户端的ID(如图中继任者ID(successorID)所示)。该ID唯一地识别第二客户端304。

参考图5,其示出可以在消息代理器中执行的方法的示例。技术人员将意识到并非本方法中所有的步骤都是必要的,并且在一些实施例中,可以省略一个或多个步骤。

在S502,消息代理器306从第二客户端302接收消息,该消息指示第二客户端302用于接收被识别为传输到其它客户端的消息的可用性。

在S504,消息代理器从第一客户端304接收消息,该消息请求用于接收被指示为传输到第一客户端304的一个或多个消息的一个或多个客户端的可用性的指示。

在S506,消息代理器306向第一客户端304发送用于接收旨在传输到第一客户端304的一个或多个消息的第二客户端302的可用性的指示。

在S508,消息代理器306从第一客户端304接收将第二客户端302识别为第一客户端304的继任者。响应于接收到该消息,消息代理器306存储并指示第二客户端302是第一客户端304的继任者。

在S510,消息代理器从充当发布者的第三客户端设备接收一个或多个消息。这些消息被指示为传输到第一客户端304。消息可以属于特定类别,并且消息是用于传输到第一客户端304的指示可以包括消息订阅了第一客户端304订阅的类别的指示。消息代理器306可以通过确定第一客户端304订阅了一个或多个消息所属的类别来确定一个或多个消息是用于传输到第一客户端304。

在S512,消息代理器306确定第一客户端304是否与消息代理器306断开连接。这可以包括确定第一客户端304是否不当地与消息代理器306断开连接。消息代理器306可以响应于检测到连接问题或异常断开连接来确定第一客户端304与消息代理器306不当地断开连接。

在S514,如果确定了第一客户端304与消息代理器306断开连接,那么消息代理器306可以将一个或多个消息发送到第二客户端302。

在S516,如果确定了第一客户端304连接到消息代理器306,那么消息代理器306将一个或多个消息发送到第一客户端304。

参考图6,其示出可以在第一客户端304处执行的方法600的示例。技术人员将意识到并非本方法中所有的步骤都是必要的,并且在一些实施例中,可以省略一个或多个步骤。

在S602,第一客户端304向消息代理器306发送消息,该消息请求用于接收旨在传输到第一客户端304的一个或多个消息的一个或多个客户端的可用性的指示。

在S604,第一客户端304从消息代理器306接收用于接收旨在传输到第一客户端304的一个或多个消息的一个或多个客户端的可用性的指示。在该示例中,一个或多个客户端包括第二客户端302。

在S606,第一客户端304向消息代理器306发送消息,该消息将第二客户端302识别为第一客户端304的继任者。在发送该消息之前,第一客户端304将从一个或多个可用的客户端中选择第二客户端302作为继任者。在第一客户端304与消息代理器306断开连接的情况下,该消息可以是对消息代理器306的指令以将指示为传递到第一客户端304的一个或多个消息路由到第二客户端302。

在S608,第一客户端304与消息代理器306断开连接。该断开连接可能是不当地断开连接。

参考图7,其示出可以在继任者客户端(在该示例中为第二客户端302)处执行的方法。技术人员将意识到并非本方法中所有的步骤都是必要的,并且在一些实施例中,可以省略一个或多个步骤。

在S702,第二客户端302被配置成向消息代理器306发送消息,该消息指示用于接收被识别为传输到其它客户端的消息的第二客户端302的可用性。

在S704,第二客户端302被配置成从消息代理器306接收被指示为传输到第一客户端304的一个或多个消息。第二客户端302可以取代第一客户端304来处理这些消息。

参考图8,其示意性地示出发布-订阅通信系统。该图还示出了第三客户端804,该第三客户端804被配置成充当用于向其它客户端发送消息的发布者。第一客户端806可以与上面关于图3描述的第一客户端304相同并且执行任何功能。第二客户端808可以与上面关于图3描述的第二客户端302相同并且执行任何功能。消息代理器802可以与上面关于图3描述的消息代理器306相同并且执行任何功能。在该示例中,第一客户端806订阅了由第三客户端804发送的类别的消息。

由图中所示的数字(1)表示的消息表示通知/订阅消息(例如,通知祖先、订阅者继任者、继任者数据、设置继任者),该通知/订阅消息从第一客户端806和第二客户端808发送以用于将第二客户端808建立为第一客户端806的继任者。在第一客户端806连接到消息代理器802的情况下,第三客户端804经由代理器802向第一客户端806发送一个或多个消息(由图中的消息(2)表示)。然而,如果第一客户端806失去与消息代理器802的连接,那么被指示为(通过其指示的类别/主题)传输到第一客户端806的接下来的一个或多个消息(由图中的消息(3)表示)将响应于继任者声明通过代理器802被转移/路由到第二客户端808。该使用场景帮助第三客户端804不浪费其消息,以使得消息以某种方式被传递到与第二客户端相关的客户端,以使得消息可以被处理或者使得可以通知其它节点。

将理解本文中所指的处理器或处理系统或电路实际上可以由单个芯片或集成电路或多个芯片或集成电路提供,可选地设置为芯片组、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、图形处理单元(GPU)等。一个或多个芯片可以包括用于体现一个或多个数据处理器和一个或多个数字信号处理器中的至少一个或多个的电路(以及可能的固件),该电路是能够配置的以便根据示例性示例进行操作。在这方面,示例性示例可以由存储在(非暂时性)存储器中的计算机软件至少部分地实现,并且可以由处理器或由硬件或由有形地存储的软件和硬件(和有形地存储的固件)的组合来执行。

本文中参考用于存储数据的数据存储。这可以由单个设备或由多个设备提供。合适的设备例如包括硬盘和非易失性半导体存储器。

虽然在描述中已经参考了消息队列遥测传输协议,但是技术人员将理解,这仅是示例,并且本公开的一些示例可以涉及其它协议的使用。

本文中描述的示例应被理解为本发明的实施例的例示性示例。设想了更多的实施例和示例。关于任何一个示例或实施例描述的任何特征可以单独使用或与其它特征结合使用。另外,关于任何一个示例或实施例描述的任何特征也可以与示例或实施例中的任何其它的一个或多个特征或者示例或实施例中的任何其它的任何组合结合使用。此外,在权利要求书中所限定的本发明的范围内,也可以采用在本文中未描述的等同物和修改。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:对本地网络上的数据存储系统的访问的基于云的管理

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类