基于消息队列的路由建立方法及系统与流程

文档序号:12492630阅读:246来源:国知局
基于消息队列的路由建立方法及系统与流程

本发明涉及网络通信技术领域,尤其涉及一种基于消息队列的路由建立方法及系统。



背景技术:

消息中间件作为中间件技术的一种重要形式,为应用系统提供可靠的消息通信手段,实现不同操作系统平台、库和硬件系统平台的通信。

作为消息中间件的一种,消息队列(Message queue,MQ)技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或者磁盘上,消息发送者把消息放入消息队列,消息接收者从消息队列中取出消息。可以为消息队列定义消息的出入顺序,例如先进先出或按优先级等。

在MQ系统中,消息队列定义在队列管理器中,并由其进行管理。由队列管理器提供基于队列的消息服务。队列管理器中的消息队列包括本地队列和远程队列。本地队列是应用程序通过应用程序编程接口(API)对其进行读写操作的队列;远程队列是目的队列在本地的定义,它类似一个地址指针,指向远程主机上的某个目的队列。

图1示出了现有的采用消息队列技术进行消息分发的过程。参见图1,在步骤S11中,第一应用程序(APP1)将消息发送至APP1所连接队列管理器1(QM1)中的远程队列;在步骤S12中,所述消息通过消息队列网络被发送至第二应用程序(APP2)所连接队列管理器2(QM2)中的本地队列,该本地队列即是QM1中的远程队列所指向的目的队列;在步骤S13中,APP2从所述本地队列中读取到APP1传输的消息;在步骤S14中,APP2将所述消息的回复消息发送至QM2中的远程队列;在步骤S15中,所述回复消息经过消息队列网络被传输至QM1中的本地队列,该本地队列即是QM2中的远程队列所指向的目的队列;在步骤S16中,APP1从QM1中的本地队列中读取所述回复消息。

上述过程的不足之处在于,在APP1发送消息至远程队列之前,APP1需要从系统管理员处预先获取到达远端应用,也就是APP2的路由信息。典型的,系统管理员会以显式的方式将上述路由信息通知给APP1。也就是说,在应用程序之间执行消息的交互之前,在应用程序上需要预先保存有到远端应用程序的路由信息,使得基于消息队列的应用程序的开发比较困难,并且,在消息队列之间的拓扑结构发生变化时,需要相应更改应用程序上的路由信息,而上述更改过程经常需要花费多余的时间。



技术实现要素:

针对上述技术问题,本发明实施例提供了一种基于消息队列的路由建立方法及系统,以实现通过应用程序代理自动构建基于消息队列的路由信息。

一方面,本发明实施例提供了一种基于消息队列的路由建立方法,所述方法包括:

第一应用程序代理将路由探测消息发送至第一应用程序代理所连接队列管理器中的远程队列;

第二应用程序代理从第二应用程序代理所连接队列管理器中的本地队列读取到所述路由探测消息后,解析该路由探测消息,根据解析结果确定并生成到第一应用程序代理的第一路由信息,并根据该第一路由信息向第二应用程序代理所连接队列管理器中的远程队列发送回复消息;以及,

第一应用程序代理从所述第一应用程序代理所连接队列管理器中的本地队列读取到所述回复消息后,解析该回复消息,根据解析结果生成到第二应用程序代理的第二路由信息。

另一方面,本发明实施例还提供了一种基于消息队列的路由建立系统,所述系统包括:

第一应用程序代理,用于将路由探测消息发送至第一应用程序代理所连接队列管理器中的远程队列;以及,

第二应用程序代理,用于从第二应用程序代理所连接队列管理器中的本地队列读取到所述路由探测消息后,解析该路由探测消息,根据解析结果确定并生成到第一应用程序代理的第一路由信息,并根据该第一路由信息向第二应用程序代理所连接队列管理器中的远程队列发送回复消息;

其中,所述第一应用程序代理从所述第一应用程序代理所连接队列管理器中的本地队列读取到所述回复消息后,解析该回复消息,根据解析结果生成到所述第二应用程序代理的第二路由信息。

本发明提供的基于消息队列的路由建立方法及系统中,第一应用程序代理向第二应用程序代理发送路由探测消息,使得第二应用程序代理根据路由探测消息建立了到第一应用程序代理的路由信息,以及,第二应用程序代理向第一应用程序代理发送回复消息,使得第一应用程序代理根据回复消息建立了到第二应用程序代理的路由信息,从而实现了通过应用程序代理自动构建基于消息队列的路由信息,应用程序之间进行通信前不需要预先从系统管理员处获得路由信息,使得基于消息队列的应用程序的开发更加容易,并且使得应用程序代理上的路由信息能够根据消息队列之间的拓扑结构的变化而随之进行动态更新。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1是现有技术提供的应用程序之间的消息交互过程的流程示意图;

图2是本发明第一实施例提供的基于消息队列的路由建立方法的流程示意图;

图3是本发明第二实施例提供的基于消息队列的路由建立方法的流程示意图;

图4是本发明第三实施例提供的基于消息队列的路由建立方法的流程示意图;

图5是本发明第四实施例提供的基于消息队列的路由建立系统的网络拓扑图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

第一实施例

图2示出了本发明第一实施例提供的基于消息队列的路由建立方法的流程图。在本实施例中,预先在需要通信的两个应用程序即第一应用程序和第二应用程序之间建立两个代理(agent),为第一应用程序建立的代理为第一应用程序代理,为第二应用程序建立的代理为第二应用程序代理。第一应用程序代理与第一应用程序本地的至少一个队列管理器连接,第二应用程序代理与第二应用程序本地的至少一个队列管理器连接,各队列管理器对其中的本地队列和远程队列进行管理。

参见图2,本实施例的基于消息队列的路由建立方法包括以下步骤:

步骤21:第一应用程序代理将路由探测消息发送至第一应用程序代理所连接队列管理器中的远程队列;

本步骤中,第一应用程序代理在启动后,向第一应用程序代理所连接队列管理器中的远程队列发送路由探测消息,向远程队列发送的路由探测消息中可以包含第一应用程序代理的标识、第一应用程序代理所连接队列管理器的标识、第一应用程序代理所连接队列管理器中的本地队列的标识以及该远程队列的标识。

在第一应用程序代理发送的路由探测消息被发送至第一应用程序代理所连接队列管理器中的远程队列后,该远程队列中的路由探测消息通过消息队列网络被发送到第二应用程序代理所连接队列管理器中的本地队列,该本地队列是路由探测消息中的远程队列所指向的目的队列。

步骤22:第二应用程序代理从第二应用程序代理所连接队列管理器中的本地队列读取到所述路由探测消息后,解析该路由探测消息,根据解析结果确定并生成到第一应用程序代理的第一路由信息,并根据该第一路由信息向第二应用程序代理所连接队列管理器中的远程队列发送回复消息;

本步骤中,第二应用程序代理在启动后处理第二应用程序代理所连接队列管理器中的本地队列接收到的路由探测消息。

首先,第二应用程序代理通过解析路由探测消息,可以得到第一应用程序代理的标识、第一应用程序代理所连接队列管理器的标识、第一应用程序代理所连接队列管理器中的本地队列的标识以及第一应用程序代理所连接队列管理器中的远程队列的标识。

然后,第二应用程序代理根据本地预先保存的配置信息确定第二应用程序代理所连接队列管理器中的、与解析出的第一应用程序代理所连接队列管理器和所述第一应用程序代理所连接队列管理器中的本地队列所对应的远程队列,该远程队列即是指向解析出的第一应用程序代理所连接队列管理器中的本地队列的远程队列。

接下来,第二应用程序代理根据确定的远程队列生成第二应用程序代理到第一应用程序代理的路由信息即第一路由信息,第一路由信息指示第二应用程序代理可以通过确定的远程队列向第一应用程序代理发送消息。第二应用程序代理将生成的第一路由信息加入到本地的第一路由表中。

后续第二应用程序在需要通过第二应用程序代理向第一应用程序代理发送消息时,第二应用程序将消息发送给第二应用程序代理,第二应用程序代理通过查询本地的第一路由表获得到第一应用程序代理的路由信息,并将消息发送到该路由信息所指示的位于第二应用程序代理所连接的队列管理器中的远程队列,该消息通过消息队列网络被发送到第一应用程序代理所连接队列管理器中的本地队列,然后第一应用程序代理从该本地队列读取消息后发送给第一应用程序。这里需要说明的是,如果第二应用程序代理通过查询本地的第一路由表获得多条到第一应用程序代理的路由信息,则可以按照预先设定的路由选择机制来选择其中一条路由信息并使用选择的路由信息向第一应用程序代理发送消息。

第二应用程序代理在确定远程队列后,向该远程队列发送回复消息,该回复消息中可以包含第二应用程序代理的标识和路由探测消息中包含的第一应用程序代理所连接队列管理器中的远程队列的标识。在回复消息被发送至第二应用程序代理所连接队列管理器中的远程队列后,该远程队列中的回复消息通过消息队列网络被发送到第一应用程序代理所连接队列管理器中的本地队列。

步骤23:第一应用程序代理从所述第一应用程序代理所连接队列管理器中的本地队列接收到回复消息后,解析该回复消息,根据解析结果生成到第二应用程序代理的第二路由信息。

本步骤中,第一应用程序代理通过解析第一应用程序代理发送的回复消息,得到第二应用程序代理的标识和第一应用程序代理所连接队列管理器中的远程队列的标识。第一应用程序代理根据解析到的信息生成第一应用程序代理到第二应用程序代理的路由信息即第二路由信息,第二路由信息指示第一应用程序代理可以通过回复消息中包含的远程队列向第二应用程序代理发送消息。第一应用程序代理将生成的第二路由信息加入到本地的第二路由表中。

后续第一应用程序在需要通过第一应用程序代理向第二应用程序代理发送消息时,第一应用程序将消息发送给第一应用程序代理,第一应用程序代理通过查询本地的第二路由表获得到第二应用程序代理的路由信息,并将消息发送到该路由信息所指示的位于第一应用程序代理所连接的队列管理器中的远程队列,该消息通过消息队列网络被发送到第二应用程序代理所连接队列管理器中的本地队列,然后第二应用程序代理从该本地队列读取消息后发送给第二应用程序。这里需要说明的是,如果第一应用程序代理通过查询本地的第二路由表获得多条到第二应用程序代理的路由信息,则可以根据预先设定的路由选择机制来选择其中一条路由信息并使用选择的路由信息向第二应用程序代理发送消息。

本实施例中,第一应用程序代理向第二应用程序代理发送路由探测消息,使得第二应用程序代理根据路由探测消息建立了到第一应用程序代理的路由信息,以及,第二应用程序代理向第一应用程序代理发送回复消息,使得第一应用程序代理根据回复消息建立了到第二应用程序代理的路由信息,从而实现了通过应用程序代理自动构建基于消息队列的路由信息,应用程序之间进行通信前不需要预先从系统管理员处获得路由信息,使得基于消息队列的应用程序的开发更加容易,并且使得应用程序代理上的路由信息能够根据消息队列之间的拓扑结构的变化而随之进行动态更新。

第二实施例

图3示出了本发明第二实施例提供的基于消息队列的路由建立方法的流程示意图。在本实施例中,第一应用程序(APP1)与第一应用程序代理(agent1)相关联,agent1与队列管理器1(QM1)相连接,QM1中设置有远程队列2(RQ2)和本地队列1(QL1);第二应用程序(APP2)与第二应用程序代理(agent2)相关联,agent2与队列管理器2(QM2)相连接,QM2中设置有远程队列1(RQ1)和本地队列2(QL2);本实施例中的应用程序代理与队列管理器之间是一对一的关系。本实施例给出了agent1与agent2之间的路由信息的建立方法,参见图3,该方法包括如下步骤:

步骤31:agent1在启动后向RQ2发送路由探测消息,该路由探测消息中包含agent1的标识、QM1的标识、QL1的标识以及RQ2的标识,即路由探测消息中包含如下一组信息(agent1,QM1,QL1,RQ2);

步骤32:在路由探测消息被发送至RQ2后,RQ2中的路由探测消息通过消息队列(MQ)网络被发送到QL2;

步骤33:agent2在启动后从QL2中读取路由探测消息;

agent2解析读取到的路由探测消息,得到信息组(agent1,QM1,QL1,RQ2),确定QM2中的与QM1和QL1对应的远程队列为RQ1;生成agent2到agent1的路由信息,该路由信息中包含QM2、RQ1与agent1的对应关系,即(QM2,RQ1->agent1);如果本地的第一路由表中没有与生成的该路由信息完全相同的路由信息,则将生成的路由信息写入本地的第一路由表中,否则丢弃生成的路由信息;

步骤34:agent2向RQ1发送回复消息,该回复消息中包含agent2的标识和RQ2的标识,即回复消息中包含如下一组信息(agent2,RQ2);当然,回复消息中还可以包含QM2和QL2的标识信息。

步骤35:在回复消息被发送至RQ1后,RQ1中的回复消息通过消息队列网络被发送到QL1。

步骤36:agent1从QL1中读取回复消息;

agent1解析读取到的回复消息,得到消息组(agent2,RQ2),生成agent1到agent2的路由信息,该路由信息中包含QM1、RQ2与agent2的对应关系,即(QM1,RQ2->agent2);如果agent1本地的第二路由表中没有与生成的该路由信息完全相同的路由信息,则将生成的路由信息写入第二路由表中,否则丢弃生成的路由信息。

在agent2上建立了到agent1的路由信息(QM2、RQ1->agent1)以及在agent1上建立了到agent2的路由信息(QM1、RQ2->agent2)后,后续APP2在需要通过agent2向agent1发送消息时,APP2将消息发送给agent2,agent2通过查询本地的第一路由表获得到agent1的路由信息(QM2、RQ1->agent1),将消息发送到该路由信息所指示的QM2中的RQ1,该消息通过消息队列(MQ)网络被从RQ1发送到QL1,然后agent1从QL1读取消息后发送给APP1。同样的,后续APP1在需要通过agent1向agent2发送消息时,APP1将消息发送给agent1,agent1通过查询本地的第二路由表获得到agent2的路由信息(QM1、RQ2->agent2),将消息发送到该路由信息所指示的QM1中的RQ2,该消息通过消息队列(MQ)网络被从RQ2发送到QL2,然后agent2从QL2读取消息后发送给APP2。

本实施例提供了应用程序代理与队列管理器之间是一对一的关系时,应用程序代理之间的路由信息的建立过程,实现了通过应用程序代理自动构建基于消息队列的路由信息。当路由信息建立好以后一个应用程序向另一应用程序发送消息时,应用程序代理只需知道另一应用程序关联了哪个agent即可,通过agent的标识查询路由表中该agent的标识对应的远程队列,然后将消息发送到该远程队列,该消息即可被消息队列网络传送至另一应用程序代理。当一个应用程序本地定义的远程队列指向的agent发生变化时,对应的路由信息会根据变化后的agent发来的路由探测消息而自动更新,而消息队列网络和应用程序代理的搭建过程全部交由系统管理员操作,从而可以使开发人员无需再关注队列变化更专注于业务的开发工作。

第三实施例

图4示出了本发明第三实施例提供的基于消息队列的路由建立方法的流程示意图。本实施例与实施例二的不同之处在于,本实施例中的应用程序代理与队列管理器之间是一对多的关系,也即应用程序代理与多个队列管理器相连接,本实施例以应用程序代理与两个队列管理器相连接为例进行说明。其中,第一应用程序(APP1)与第一应用程序代理(agent1)相关联,agent1与队列管理器1(QM1)和队列管理器3(QM3)相连接,QM1中设置有远程队列2(RQ2)和本地队列1(QL1),QM3中设置有远程队列4(RQ4)和本地队列3(QL3);第二应用程序(APP2)与第二应用程序代理(agent2)相关联,agent2与队列管理器(QM2)和队列管理器4(QM4)相连接,QM2中设置有远程队列1(RQ1)和本地队列2(QL2),QM4中设置有远程队列3(RQ3)和本地队列4(QL4)。

本实施例中,agent1与agent2之间通过QM1和QM2建立路由信息,其建立方法可以参见实施例二中步骤31-步骤36的描述,这里不再赘述。

本实施例中,agent1与agent2之间还通过QM3和QM4建立路由信息,参见图4,其建立方法包括如下步骤:

步骤41:agent1在启动后向RQ4发送路由探测消息,该路由探测消息中包含agent1的标识、QM3的标识、QL3的标识以及RQ4的标识,即路由探测消息中包含如下一组信息(agent1,QM3,QL3,RQ4);

步骤42:在路由探测消息被发送至RQ4后,RQ4中的路由探测消息通过消息队列网络被发送到QL4;

步骤43:agent2在启动后从QL4中读取路由探测消息;

agent2解析读取到的路由探测消息,得到信息组(agent1,QM3,QL3,RQ4),确定QM4中的与QM3和QL3对应的远程队列为RQ3;生成agent2到agent1的路由信息,该路由信息中包含QM4、RQ3与agent1的对应关系,即(QM4,RQ3->agent1);如果本地的第一路由表中没有与生成的该路由信息完全相同的路由信息,则将生成的路由信息写入第一路由表中,否则丢弃生成的路由信息。

步骤44:agent2向RQ3发送回复消息,该回复消息中包含agent2的标识和RQ4的标识,即回复消息中包含如下一组信息(agent2,RQ4);当然,回复消息中还可以包含QM4和QL4的标识信息。

步骤45:在回复消息被发送至RQ3后,RQ3中的回复消息通过消息队列(MQ)网络被发送到QL3。

步骤46:agent1从QL3中读取回复消息;

agent1解析读取到的回复消息,得到消息组(agent2,RQ4),生成agent1到agent2的路由信息,该路由信息中包含QM3、RQ4与agent2的对应关系,即(QM3,RQ4->agent2);如果本地的第二路由表中没有与生成的该路由信息完全相同的路由信息,则将生成的路由信息写入第二路由表中,否则丢弃生成的路由信息。

通过上述过程,在agent2上建立了到agent1的两条路由信息(QM2、RQ1->agent1)和(QM4、RQ3->agent1),以及在agent1上建立了到agent2的两条路由信息(QM1、RQ2->agent2)和(QM3、RQ4->agent2),后续APP2在需要通过agent2向agent1发送消息时,APP2将消息发送给agent2,agent2通过查询本地的第一路由表获得到agent1的两条路由信息(QM2、RQ1->agent1)和(QM4、RQ3->agent1),按照预先设定的路由选择机制选择其中一条路由信息,将消息发送到选择的路由信息所指示的RQ1或RQ3,该消息通过消息队列网络(MQ)被从RQ1或RQ3发送到QL1或QL3,然后agent1从QL1或QL3读取消息后发送给APP1。同样的,后续APP1在需要通过agent1向agent2发送消息时,APP1将消息发送给agent1,agent1通过查询本地的第二路由表获得到agent2的两条路由信息(QM1、RQ2->agent2)和(QM3、RQ4->agent2),按照预先设定的路由选择机制选择其中一条路由信息,将消息发送到选择的路由信息所指示的RQ2或RQ4,该消息通过消息队列(MQ)网络被从RQ2或RQ4发送到QL2或QL4,然后agent2从QL2或QL4读取消息后发送给APP2。

可见,本发明实施例中第二应用程序代理生成的第一路由信息包含确定的远程队列的标识、确定的远程队列所在队列管理器的标识和第一应用程序代理的标识;将第一路由信息写入本地的第一路由表中后,在接收到需要发送给第一应用程序代理的消息时,在本地的第一路由表中查询包含第一应用程序代理的标识的路由信息,若查询得到一条路由信息,则将消息发送至查询得到的路由信息所指示的队列管理器中的远程队列;若查询得到多条路由信息,则按照设定路由选择机制从该多条路由信息中选择一条路由信息,将消息发送至选择的路由信息所指示的队列管理器中的远程队列。

同样的,第一应用程序代理生成的第二路由信息包含第一应用程序代理所连接队列管理器中的远程队列的标识、第一应用程序代理所连接队列管理器中的远程队列所在队列管理器的标识和第二应用程序代理的标识;第一应用程序代理将第二路由信息写入本地的第二路由表中后,在接收到需要发送给第二应用程序代理的消息时,在本地的第二路由表中查询包含第二应用程序代理的标识的路由信息,若查询得到一条路由信息,则将消息发送至查询得到的路由信息所指示的队列管理器中的远程队列;若查询得到多条路由信息,则按照设定路由选择机制从该多条路由信息中选择一条路由信息,将消息发送至选择的路由信息所指示的队列管理器中的远程队列。

其中的路由选择机制可以包括但不限于以下两种:

第一,根据对应的应用程序的指示选择路由信息,比如第一应用程序代理根据第一应用程序的指示选择路由信息,第二应用程序代理根据第二应用程序的指示选择路由信息;

第二,应用程序代理在使用每条路由信息进行消息的发送时,记录从发送消息到接收到该消息的回复消息的时间间隔,并且应用程序代理会记录每条路由信息的当前状态是否被占用,下表1给出了agent2在使用路由信息(QM4、RQ3->agent1)进行消息的发送时,记录的内容的一个示例。当存在两个应用程序代理之间的多条路由信息时,根据记录的多条路由信息分别对应的时间间隔以及是否被占用的信息,来从多条路由信息中选择一条路由信息,比如选择未被占用的、且时间间隔最小的路由信息来进行消息的发送。

表1

本实施例提供了应用程序代理与队列管理器之间是一对多的关系时,应用程序代理之间的路由信息的建立过程,实现了通过应用程序代理自动构建基于消息队列的路由信息。当路由信息建立好以后一个应用程序向另一应用程序发送消息时,应用程序代理只需知道另一应用程序关联了哪个agent即可,通过agent的标识查询路由表中该agent的标识对应的远程队列,当查询到多个远程队列时,根据一定的路由选择机制选择一个远程队列,然后将消息发送到该远程队列,该消息即可被消息队列网络传送至另一应用程序代理。当一个应用程序本地定义的远程队列指向的agent发生变化时,对应的路由信息会根据变化后的agent发来的路由探测消息而自动更新,而消息队列网络和代理的搭建过程全部交由系统管理员操作,从而可以使开发人员无需再关注队列变化更专注于业务的开发工作。

第四实施例

图5示出了本发明第四实施例提供的基于消息队列的路由建立系统的网络图。参见图5,该基于消息队列的路由建立系统包括:第一应用程序代理51、第二应用程序代理52、第一应用程序代理所连接的队列管理器即第一队列管理器53和第二应用程序代理所连接的队列管理器即第二队列管理器54,其中:

第一应用程序代理51,用于将路由探测消息发送至第一应用程序代理51所连接队列管理器53中的远程队列;

第二应用程序代理52,用于从第二应用程序代理52所连接队列管理器54中的本地队列接收到所述路由探测消息后,解析该路由探测消息,根据解析结果确定并生成到第一应用程序代理51的第一路由信息,并根据该第一路由信息将回复消息发送至第二应用程序代理52所连接队列管理器54中的远程队列;

其中,所述第一应用程序代理51从所述第一应用程序代理51所连接队列管理器53中的本地队列读取到所述回复消息后,解析该回复消息,根据解析结果生成到所述第二应用程序代理52的第二路由信息。

进一步的,所述路由探测消息中包含所述第一应用程序代理51的标识、所述第一应用程序代理51所连接队列管理器53的标识、所述第一应用程序代理51所连接队列管理器53中的本地队列的标识、所述第一应用程序代理51所连接队列管理器53中的远程队列的标识;

相应的,所述第二应用程序代理52根据解析结果确定并生成到第一应用程序代理51的第一路由信息,并根据该第一路由信息向第二应用程序代理52所连接队列管理器54中的远程队列发送回复消息的具体方法为:

根据所述路由探测消息的解析结果确定所述第二应用程序代理52所连接队列管理器54中的、与所述第一应用程序代理51所连接队列管理器53和所述第一应用程序代理51所连接队列管理器53中的本地队列所对应的远程队列,根据确定的远程队列生成所述第二应用程序代理到第一应用程序代理51的第一路由信息,并向确定的远程队列发送回复消息。

进一步的,所述回复消息中包含第二应用程序代理52的标识和所述第一应用程序代理51所连接队列管理器53中的远程队列的标识;

相应的,所述第一应用程序代理51根据解析结果生成到第二应用程序代理52的第二路由信息的具体方法如下:

根据解析所述回复消息得到的所述第一应用程序代理51所连接队列管理器53中的远程队列的标识和所述第二应用程序代理52的标识生成所述第一应用程序代理51到所述第二应用程序代理52的所述第二路由信息。

进一步的,所述第二应用程序代理52与一个或多个队列管理器连接,所述第一路由信息包含所述确定的远程队列的标识、所述确定的远程队列所在队列管理器的标识和所述第一应用程序代理51的标识;

所述第二应用程序代理52还用于:在生成第一路由信息之后,将所述第一路由信息写入本地的第一路由表中;在接收到需要发送给第一应用程序代理51的消息时,在本地的第一路由表中查询包含所述第一应用程序代理的标识的路由信息,若查询得到一条路由信息,则将所述消息发送至查询得到的路由信息所指示的队列管理器中的远程队列;若查询得到多条路由信息,则按照设定路由选择机制从该多条路由信息中选择一条路由信息,将所述消息发送至选择的路由信息所指示的队列管理器中的远程队列。

进一步的,所述第一应用程序代理51与一个或多个队列管理器连接,所述第二路由信息包含所述第一应用程序代理所连接队列管理器53中的远程队列的标识、所述第一应用程序代理所连接队列管理器53中的远程队列所在队列管理器的标识和所述第二应用程序代理52的标识;

所述第一应用程序代理51还用于:在生成第二路由信息之后,将所述第二路由信息写入本地的第二路由表中;在接收到需要发送给第二应用程序代理52的消息时,在本地的第二路由表中查询包含所述第二应用程序代理的标识的路由信息,若查询得到一条路由信息,则将所述消息发送至查询得到的路由信息所指示的队列管理器中的远程队列;若查询得到多条路由信息,则按照设定路由选择机制从该多条路由信息中选择一条路由信息,将所述消息发送至选择的路由信息所指示的队列管理器中的远程队列。

本实施例中的应用程序代理和其所连接的队列管理器可以设置在同一终端或服务器上,也可以设置在不同终端或服务器上。

本发明利用消息队列的回复机制进行了路由信息的自动建立,同时对应用程序屏蔽了队列的细节,使得基于消息队列的应用开发变得更加容易,应用程序不再需要关注队列的信息,只需要关联本地的应用程序代理,应用程序代理可将消息发送到对端应用程序代理,此方案也使得应用程序无需关注底层消息队列网络的修改。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1