一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于RabbitMQ双工通讯的方法及应用与流程

2022-06-05 05:50:56 来源:中国专利 TAG:

基于rabbit mq双工通讯的方法及应用
技术领域
1.本发明是关于计算机领域,特别是关于一种基于rabbit mq双工通讯的方法及应用。


背景技术:

2.现有技术通过rabbit mq进行消息分发或广播的应用方法都是通过消费者模式运作的。消费者模式的特点是消息发布者对消费者的数量未知,并且不关注消费者是否在线,只要生产消息并推送到消息总线即可。该模式下消费者和消息发布者之间都不知道彼此的存在,因此无法进行传统的通讯沟通。
3.公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。


技术实现要素:

4.本发明的目的在于提供一种基于rabbit mq双工通讯的方法及应用,解决在需要和对端进行通讯时,只能进行点对点的连接,在对端位置未知的情况下无法进行通讯的问题。
5.为实现上述目的,本发明的实施例提供了一种基于rabbit mq双工通讯的方法。
6.在本发明的一个或多个实施方式中,所述方法包括:创建左向队列和右向队列,其中,所述左向队列用于供至少一个发送端监听至少一个接收端发送的报文,所述右向队列用于供至少一个接收端监听至少一个发送端发送的报文;所述发送端根据左向路由规则将rabbit mq交换机与左向队列绑定、并根据右向路由规则将rabbit mq交换机与右向队列绑定;以及所述发送端在左向队列监听到接收端的握手报文后与所述接收端进行通讯,所述握手报文为所述接收端根据所述右向路由规则发送。
7.在本发明的一个或多个实施方式中,所述发送端在左向队列监听到接收端的握手报文后与所述接收端进行通讯,包括:所述发送端的队列管理器在监听到左向队列有报文到达时,将所述到达的报文写入发送端的读取接口;以及所述发送端的队列管理器在监听到发送端的写入接口有报文写入时,根据左向路由规则将所述写入的报文发送至rabbitmq交换机。
8.在本发明的一个或多个实施方式中,在所述发送端断开连接时,所述方法还包括:所述发送端发送结束报文,并清除所述rabbit mq交换机、左向队列和右向队列。
9.在本发明的一个或多个实施方式中,所述通讯连接配置包括:rabbit mq地址、用户名、密码、密钥、交换机、左向队列和右向队列。
10.为实现上述目的,本发明的实施例提供了又一种基于rabbit mq双工通讯的方法。
11.在本发明的一个或多个实施方式中,所述方法包括:接收端分别创建左向队列和右向队列;以及所述接收端根据右向路由规则将握手报文发送至发送端,并在所述发送端在左向队列监听到所述握手报文后,与所述发送端进行通讯;其中,所述左向队列用于供发
送端监听接收端发送的报文,所述右向队列用于供接收端监听发送端发送的报文,所述左向队列根据左向路由规则与rabbit mq交换机绑定,所述右向队列根据右向路由规则与rabbit mq交换机绑定。
12.在本发明的一个或多个实施方式中,所述方法还包括:所述接收端的队列管理器在监听到右向队列有报文到达时,将所述到达的报文写入接收端的读取接口;以及所述接收端的队列管理器在监听到接收端的写入接口有报文写入时,根据右向路由规则将所述写入的报文发送至rabbit mq交换机。
13.在本发明的另一个方面当中,提供了一种基于rabbit mq双工通讯的装置,其包括创建模块、路由模块和通讯模块。
14.创建模块,用于创建左向队列和右向队列,其中,所述左向队列用于供至少一个发送端监听至少一个接收端发送的报文,所述右向队列用于供至少一个接收端监听至少一个发送端发送的报文。
15.路由模块,用于供所述发送端根据左向路由规则将rabbit mq交换机与左向队列绑定、并根据右向路由规则将rabbit mq交换机与右向队列绑定。
16.通讯模块,用于供所述发送端在左向队列监听到接收端的握手报文后与所述接收端进行通讯,所述握手报文为所述接收端根据所述右向路由规则发送。
17.在本发明的一个或多个实施方式中,所述通讯模块还用于:所述发送端的队列管理器在监听到左向队列有报文到达时,将所述到达的报文写入发送端的读取接口;以及所述发送端的队列管理器在监听到发送端的写入接口有报文写入时,根据左向路由规则将所述写入的报文发送至rabbitmq交换机。
18.在本发明的一个或多个实施方式中,所述通讯模块还用于:在所述发送端断开连接时,所述发送端发送结束报文,并清除rabbit mq的交换机、左向队列和右向队列。
19.在本发明的另一个方面当中,提供了又一种基于rabbit mq双工通讯的装置,其包括通讯模块。
20.通讯模块,用于供接收端分别创建左向队列和右向队列;以及所述接收端根据右向路由规则将握手报文发送至发送端,并在所述发送端在左向队列监听到所述握手报文后,与所述发送端进行通讯;其中,所述左向队列用于供发送端监听接收端发送的报文,所述右向队列用于供接收端监听发送端发送的报文,所述左向队列根据左向路由规则与rabbit mq交换机绑定,所述右向队列根据右向路由规则与rabbit mq交换机绑定。
21.在本发明的一个或多个实施方式中,所述通讯模块还用于:所述接收端的队列管理器在监听到右向队列有报文到达时,将所述到达的报文写入接收端的读取接口;以及所述接收端的队列管理器在监听到接收端的写入接口有报文写入时,根据右向路由规则将所述写入的报文发送至rabbitmq交换机。
22.在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的基于rabbit mq双工通讯的方法。
23.在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的基于rabbit mq双工通讯的方法的步骤。
24.与现有技术相比,根据本发明实施方式的基于rabbit mq双工通讯的方法及应用,其能够通过创建2个rabbit mq消息队列充当双向流量的通道,并创建专属的路由规则将路由与对应的消息队列绑定,使得发送端使用左向队列接收消息并通过key:connection.duplex.right向交换机发送消息,接收端使用右向队列接收消息并通过key:connection.duplex.left向交换机发送消息,并且只需要接收端发送一个握手报文就可以进行双工通讯。
附图说明
25.图1是根据本发明一实施方式的基于rabbit mq双工通讯的方法的发送端流程图;
26.图2是根据本发明一实施方式的基于rabbit mq双工通讯的方法的系统结构图;
27.图3是根据本发明一实施方式的基于rabbit mq双工通讯的方法的路由管理器流程图;
28.图4是根据本发明一实施方式的基于rabbit mq双工通讯的方法的发送端队列管理器流程图;
29.图5是根据本发明一实施方式的基于rabbit mq双工通讯的方法的发送端数据包传输流程图;
30.图6是根据本发明一实施方式的基于rabbit mq双工通讯的方法的接收端流程图;
31.图7是根据本发明一实施方式的基于rabbit mq双工通讯的方法的接收端队列管理器流程图;
32.图8是根据本发明一实施方式的基于rabbit mq双工通讯的方法的接收端数据包传输流程图;
33.图9是根据本发明一实施方式的基于rabbit mq双工通讯的装置的发送端结构图;
34.图10是根据本发明一实施方式的基于rabbit mq双工通讯的装置的接收端结构图;
35.图11是根据本发明一实施方式的基于rabbitmq双工通讯的计算设备的硬件结构图。
具体实施方式
36.下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
37.除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
38.以下结合附图,详细说明本发明各实施例提供的技术方案。
39.实施例1
40.如图1至图5所示,介绍本发明的一个实施例中基于rabbit mq双工通讯的方法,该方法包括如下步骤。
41.在步骤s101中,发送端分别创建左向队列和右向队列。
42.rabbitmq的工作原理是消息发布者向rabbit mq代理服务器发送消息,代理服务
器内部的交换器接收信息,把消息传递到与交换器绑定的消息队列中并保存,消费者通过与消息代理服务器建立连接,然后从对应的消息队列中取出消息进行处理的过程。
43.发送端和接收端约定所要使用的通讯连接配置,包括:rabbit mq地址、用户名、密码、密钥、通讯时所要使用的交换机、左向队列和右向队列。交换机用来接收消息发布者发送的消息并将这些消息路由给服务器中的队列。左向队列和右向队列用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。
44.发送端使用约定的通讯连接配置设置发送端的读写引擎,读写引擎包括读取接口、写入接口、路由管理器和队列管理器。读写引擎的队列管理器根据通讯连接配置创建2个rabbit mq消息队列充当双向流量的通道,使发送端和接收端可以使用各自相对应的左向队列或右向队列监听对方发送的报文。
45.在步骤s102中,发送端根据左向路由规则将rabbit mq交换机与左向队列绑定、并根据右向路由规则将rabbit mq交换机与右向队列绑定。
46.发送端的读写引擎根据配置信息主动连接rabbit mq并配置对应的消息队列名称、路由器并根据路由规则绑定对应队列。
47.具体的,读写引擎根据通讯连接配置生成路由规则key:connection.duplex.right和key:connection.duplex.left,并创建专属的通讯路由。在读写引擎的队列管理器创建左向队列和右向队列成功后,根据路由规则key:connection.duplex.right绑定右向队列,key:connection.duplex.left绑定左向队列,并通知队列管理器初始化准备就绪,进而实现双工通讯。
48.在步骤s103中,发送端在左向队列监听到接收端的握手报文后与接收端进行通讯。
49.发送端的队列管理器在接收到路由管理器发送的准备就绪信号后,开始监听左向队列内的消息,接受端使用key:connection.duplex.left主动发送握手报文,在发送端接收到接收端发送的握手报文后开始通讯。
50.发送端使用左向队列接收消息并通过key:connection.duplex.right向交换机发送消息。接收端使用右向队列接收消息并通过key:connection.duplex.left向交换机发送消息。
51.在发送端的队列管理器监听到左向队列有信息到达时,将信息写入发送端的读取接口。在发送端的队列管理器监听到写入接口有信息写入时,根据对应的路由规则key:connection.duplex.right将信息发送至rabbit mq的交换机。
52.当发送端或接收端需要断开连接时需要发送结束报文,在对端接收到结束报文断开后,发送端主动清除rabbitmq的交换机、左向队列和右向队列。
53.实施例2
54.如图6至图8所示,介绍本发明的一个实施例中基于rabbit mq双工通讯的方法,该方法包括如下步骤。
55.在步骤s201中,接收端分别创建左向队列和右向队列。
56.本发明不仅适用于一个发送端和一个接收端的情形,还适用于一对多,多对一,多对多的情形,即可以一个发送端对应于多个接收端,或多个接收端对应于一个发送端,或同
时有多个不同的接收端对应于多个不同的发送端,由于路由规则都是不同的,因此彼此线路之间是互相独立,互不干扰的。本实施例以一个发送端对应于多个接收端为例。
57.rabbitmq的工作原理是消息发布者向rabbit mq代理服务器发送消息,代理服务器内部的交换器接收信息,把消息传递到与交换器绑定的消息队列中并保存,消费者通过与消息代理服务器建立连接,然后从对应的消息队列中取出消息进行处理的过程。
58.发送端和接收端约定所要使用的通讯连接配置,包括:rabbit mq地址、用户名、密码、密钥、通讯时所要使用的交换机、左向队列和右向队列。交换机用来接收消息发布者发送的消息并将这些消息路由给服务器中的队列。左向队列和右向队列用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。
59.发送端和接收端使用约定的通讯连接配置设置发送端和接收端的读写引擎,读写引擎包括读取接口、写入接口、路由管理器和队列管理器。读写引擎的队列管理器根据通讯连接配置创建2个rabbit mq消息队列充当双向流量的通道,使发送端和接收端可以使用各自相对应的左向队列或右向队列监听对方发送的报文。
60.在步骤s202中,接收端根据左向路由规则将rabbit mq交换机与左向队列绑定、并根据右向路由规则将rabbit mq交换机与右向队列绑定。
61.接收端的读写引擎根据配置信息主动连接rabbit mq并配置对应的消息队列名称、路由器并根据路由规则绑定对应队列。
62.在本实施例中,具有发送端、第一接收端和第二接收端进行通讯,左向队列用于供发送端监听第一接收端和第二接收端发送的报文,第一右向队列用于供第一接收端监听发送端发送的报文,第二右向队列用于供第二接收端监听发送端发送的报文。
63.读写引擎根据通讯连接配置生成路由规则key:connection.duplex.right.1、key:connection.duplex.right.2和key:connection.duplex.left,并创建专属的通讯路由。在读写引擎的队列管理器创建左向队列和右向队列成功后,根据路由规则key:connection.duplex.right.1绑定第一右向队列,根据路由规则key:connection.duplex.right.2绑定第二右向队列,key:connection.duplex.left绑定左向队列,并通知队列管理器初始化准备就绪,进而实现双工通讯。
64.在步骤s203中,接收端根据路由规则主动发送握手报文。
65.发送端的队列管理器在接收到路由管理器发送的准备就绪信号后,开始监听左向队列内的消息,第一接收端和第二接收端分别使用key:connection.duplex.left主动发送握手报文,在发送端接收到第一接收端或第二接收端发送的握手报文后开始通讯。
66.发送端使用左向队列接收消息并通过key:connection.duplex.right.1、key:connection.duplex.right.2向交换机发送消息。第一接收端和第二接收端分别使用第一右向队列和第二右向队列接收消息并通过key:connection.duplex.left向交换机发送消息。
67.在发送端的队列管理器监听到左向队列有信息到达时,将信息写入发送端的读取接口。在发送端的队列管理器监听到写入接口有信息写入时,根据对应的路由规则key:connection.duplex.right.1或key:connection.duplex.right.2将信息发送至rabbitmq的交换机。
68.在步骤s204中,接收端监听rabbitmq的交换机是否上线。
69.发送端和接收端约定所要使用的通讯连接配置,包括:rabbit mq地址、用户名、密码、密钥、通讯时所要使用的交换机、左向队列和右向队列。交换机用来接收消息发布者发送的消息并将这些消息路由给服务器中的队列。左向队列和右向队列用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。
70.接收端使用约定的通讯连接配置设置接收端的读写引擎,接收端的读写引擎根据配置信息主动连接rabbitmq,并监听rabbit mq的交换机是否上线。若监听rabbit mq的到交换机上线,则代表发送端的写入接口有信息写入,并通过对应的路由规则key:connection.duplex.right将信息发送至rabbitmq的交换机,并且交换机将信息发送至右向队列,此时接收端通过监听右向队列可以接收到该信息。
71.在步骤s205中,在接收端的队列管理器监听到右向队列有信息到达时,将信息写入接收端的读取接口。
72.第一接收端和第二接收端分别使用第一右向队列和第二右向队列接收发送端的消息并通过key:connection.duplex.left分别向rabbit mq的交换机发送消息。
73.发送端的写入接口有信息写入时,通过对应的路由规则key:connection.duplex.right.1或key:connection.duplex.right.2将信息发送至rabbit mq的交换机,交换机将信息分别发送至第一右向队列和第二右向队列,此时第一接收端和第二接收端的队列管理器都可以监听到对应的右向队列有信息到达,第一接收端和第二接收端的队列管理器将该信息写入对应的读取接口。
74.在步骤s206中,在接收端的队列管理器监听到写入接口有信息写入时,根据对应的路由规则将信息发送至rabbitmq的交换机。
75.第一接收端或第二接收端的写入接口有信息写入时,通过对应的路由规则key:connection.duplex.left将信息发送至rabbit mq的交换机,交换机将信息发送至左向队列,此时发送端的队列管理器可以监听到左向队列有信息到达,发送端的队列管理器则将该信息写入发送端的读取接口。
76.如图9所示,介绍根据本发明具体实施方式的基于rabbit mq双工通讯的装置。
77.在本发明的实施方式中,基于rabbit mq双工通讯的装置包括创建模块901、路由模块902和通讯模块903。
78.创建模块901,用于创建左向队列和右向队列,其中,左向队列用于供至少一个发送端监听至少一个接收端发送的报文,右向队列用于供至少一个接收端监听至少一个发送端发送的报文。
79.路由模块902,用于供发送端根据左向路由规则将rabbit mq交换机与左向队列绑定、并根据右向路由规则将rabbit mq交换机与右向队列绑定。
80.通讯模块903,用于供发送端在左向队列监听到接收端的握手报文后与接收端进行通讯,握手报文为接收端根据右向路由规则发送。
81.通讯模块903还用于:发送端的队列管理器在监听到左向队列有报文到达时,将到达的报文写入发送端的读取接口;以及发送端的队列管理器在监听到发送端的写入接口有报文写入时,根据左向路由规则将写入的报文发送至rabbit mq交换机。
82.通讯模块903还用于:在发送端断开连接时,发送端发送结束报文,并清除rabbit mq的交换机、左向队列和右向队列。
83.如图10所示,介绍根据本发明具体实施方式的基于rabbit mq双工通讯的装置。
84.在本发明的实施方式中,基于rabbit mq双工通讯的装置包括通讯模块1001。
85.通讯模块1001,用于供接收端分别创建左向队列和右向队列,接收端根据右向路由规则将握手报文发送至发送端,并在发送端在左向队列监听到握手报文后,与发送端进行通讯;其中,左向队列用于供发送端监听接收端发送的报文,右向队列用于供接收端监听发送端发送的报文,左向队列根据左向路由规则与rabbit mq交换机绑定,右向队列根据右向路由规则与rabbit mq交换机绑定。
86.通讯模块1001还用于:接收端的队列管理器在监听到右向队列有报文到达时,将到达的报文写入接收端的读取接口;以及接收端的队列管理器在监听到接收端的写入接口有报文写入时,根据右向路由规则将写入的报文发送至rabbit mq交换机。
87.图11示出了根据本说明书的实施例的用于基于rabbit mq双工通讯的计算设备110的硬件结构图。如图11所示,计算设备110可以包括至少一个处理器1101、存储器1102(例如非易失性存储器)、内存1103和通信接口1104,并且至少一个处理器1101、存储器1102、内存1103和通信接口1104经由总线1105连接在一起。至少一个处理器1101执行在存储器1102中存储或编码的至少一个计算机可读指令。
88.应该理解,在存储器1102中存储的计算机可执行指令当执行时使得至少一个处理器1101进行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
89.在本说明书的实施例中,计算设备110可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(pda)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
90.根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
91.根据本发明实施方式的基于rabbit mq双工通讯的方法及应用,其能够通过创建2个rabbit mq消息队列充当双向流量的通道,并创建专属的路由规则将路由与对应的消息队列绑定,使得发送端使用左向队列接收消息并通过key:connection.duplex.right向交换机发送消息,接收端使用右向队列接收消息并通过key:connection.duplex.left向交换机发送消息,并且只需要接收端发送一个握手报文就可以进行双工通讯。
92.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
93.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
94.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
95.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
96.前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献