CN106293968A - 一种基于Kafka消息中间件的双向通信系统及方法 - Google Patents
一种基于Kafka消息中间件的双向通信系统及方法 Download PDFInfo
- Publication number
- CN106293968A CN106293968A CN201610630955.4A CN201610630955A CN106293968A CN 106293968 A CN106293968 A CN 106293968A CN 201610630955 A CN201610630955 A CN 201610630955A CN 106293968 A CN106293968 A CN 106293968A
- Authority
- CN
- China
- Prior art keywords
- message
- publisher
- kafka
- subscriber
- theme
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于Kafka消息中间件的双向通信系统及方法,其系统包括发布者、订阅者、Kafka集群以及数据库;发布者和订阅者都包含Kafka生产者和Kafka消费者,且都具有向Kafka集群发布和从Kafka集群接收消息的能力;其方法基于该系统,包括发布者处理过程和订阅者处理过程,其中发布者处理过程包括发布者初始化、发布者的消息上传以及发布者的消息下发的步骤;订阅者处理过程包括订阅者的初始化、订阅者的消息上传以及订阅者的消息下发的步骤;本发明提供的这种系统及方法实现了基于Kafka消息中间件的双向通信;可应用于需要反方向通信的环境进行双向的数据采集与控制。
Description
技术领域
本发明属于分布式系统节点间通信技术领域,更具体地,涉及一种基于Kafka消息中间件的双向通信系统及方法。
背景技术
消息中间件是一种广泛运用在分布式系统中的用于节点间通信的软件。Kafka是由LinkedIn公司开发并开源的消息中间件。Kafka消息中间件主要由生产者、代理者和消费者组成,生产者发布消息,代理者将消息从生产者转发到消费者,消费者接收并处理消息。在实际运用中,一般会将多个Kafka代理者以集群的方式运行形成Kafka集群。Kafka提供一种特殊的发布/订阅模式。在传统的发布/订阅模式中,生产者向某个消息主题发布消息,订阅者则向代理者订阅并获取某个主题下的消息。在Kafka消息中间件技术中,主题是指Kafka集群维护的按照不同分类进行区分的消息流。Kafka对主题进行了分区,Kafka消息是具有键和值的消息,具有相同的键的消息会进入到同一个分区,同一个分区的消息会发送到相同的消费者。这样具有相同键的消息、主题分区和消费者会有一定的映射关系。
在这种消息转发模式下,Kafka只支持单向的消息转发,不能直接支持反方向的消息转发,因此在某些需要反方向通信的环境中,如工业现场监控、智能家居等应用场景,Kafka则不能完全满足数据采集与控制的需求。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于Kafka消息中间件的双向通信系统及方法,其目的在于解决现有Kafka不能支持反方向消息转发的问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于Kafka消息中间件的双向通信系统,该系统包括发布者、订阅者、Kafka集群以及数据库;
其中,发布者和订阅者均包含Kafka生产者和Kafka消费者,且均具有向Kafka集群发布和从Kafka集群接收消息的能力;
其中,发布者用于与消息流进行通信、向Kafka集群发布上传消息、从Kafka集群接收下发消息;订阅者用于与其他应用程序通信,获取或者生成下发消息、向Kafka集群发布下发消息、从Kafka集群接收上传消息;数据库用于存储消息流标识与发布者标识之间的映射关系。
优选的,上述的双向通信系统,采用Redis分布式内存数据库存储上述映射关系,以提高短时大量查询的访问效率。
优选的,上述的双向通信系统,订阅者中具有一张维护消息流标识与发布者标识之间映射关系的消息流发布者Hash表、一张发布者标识与发布者主题之间映射关系的发布者主题Hash表;其中,发布者、发布者标识和发布者主题具有一一对应的关系且全局唯一;
发布者中具有一张维护消息流标识与外部消息流映射关系的消息流标识Hash表;
上传消息是指从发布者发送到订阅者的消息;
下发消息是指从订阅者发送到发布者的消息;
发布者主题是指发布者需要订阅的主题并从该主题下接受下发消息;
订阅者主题是指订阅者需要订阅的主题并从该主题下接受上传消息;
外部消息流是指外部数据源按照任意网络通信方式提供的包含任意格式和类型数据的消息序列。
为实现本发明目的,按照本发明的另一个方面,基于上述的双向通信系统,提供了一种基于Kafka消息中间件的双向通信方法,包括发布者处理过程和订阅者处理过程;
其中,发布者处理过程包括以下步骤:
(a1)发布者从配置文件中获取相关配置,包括发布者主题、用于上传消息的订阅者主题、发布者标识;对消息流标识Hash表进行初始化处理,从Kafka集群订阅发布者主题;
(a2)当外部消息流中有消息需要上传时,发布者从外部消息流中获取上传信息;
以该上传消息为基础构建Kafka消息,并将此Kafka消息发布到Kafka集群中当前发布者上传消息的订阅者主题下;
(a3)当发布者从Kafka集群接收到需要下发的Kafka消息,解析Kafka消息取出拟下发的消息,将拟下发的消息发送到指定的外部消息流;
其中,订阅者处理过程包括以下步骤:
(b1)订阅者从配置文件中读取相关配置,包括订阅者主题、发布者标识与发布者主题的映射关系;消息流发布者Hash表和消息流主题Hash表进行初始化处理,并从Kafka集群订阅订阅者主题;
(b2)当订阅者从Kafka集群接收到拟上传的Kafka消息,根据Kafka消息更新消息流标识与发布者标识之间的映射关系,从Kafka消息中将抽取应用层消息,并发送到第三方应用程序;
(b3)当订阅者自身产生拟下发消息或者收到第三方应用程序的拟下发信息时,订阅者以所述拟下发消息为基础构建Kafka消息,并将Kafka消息发布到Kafka集群的主题下。
优选地,上述的双向通信方法,其步骤(a2)包括以下子步骤:
(a2.1)从外部消息流获取需要上传的消息;
(a2.2)在发布者标识与消息流标识之间添加分隔符,并按字符串相连接的方式组合构成Kafka消息的键,以从外部消息流获取的上传消息的内容构成Kafka消息的值,并发布到用于上传消息的订阅者主题;
(a2.3)判断是否有新的外部消息流加入到发布者,若是,则进入步骤(a2.4);若否,则进入步骤(a2.1);
(a2.4)生成一个随机数作为新的外部消息流的消息流标识;
(a2.5)判断步骤(a2.4)中生成的新的消息流标识是否已经存在于消息流标识Hash表中,若是,则进入步骤(a2.4);若否,则进入步骤(a2.6);
(a2.6)将新的消息流标识与外部消息流的映射关系插入到消息流标识Hash表中,进入步骤(a2.1)。
优选地,上述的双向通信方法,其步骤(a3)包括以下子步骤:
(a3.1)从Kafka集群获取Kafka消息;
(a3.2)获取所述Kafka消息的消息流标识,并以所述消息流标识为键在消息流标识Hash表中查找外部消息流映射值;
(a3.3)获取Kafka消息的值;并根据上述外部消息流映射值确定外部消息流,将Kafka消息的值发送给上述外部消息流,并进入步骤(a3.1)。
优选地,上述的双向通信方法,其步骤(b2)包括以下子步骤:
(b2.1)从Kafka集群获取需要上传的Kafka消息;
(b2.2)以分隔符为分割标志、以字符串拆分的方式分割Kafka消息的键,以获得消息流标识和发布者标识;
(b2.3)以消息流标识为键在消息流发布者Hash表中查找发布者标识,若没有查找到发布者标识映射值,则进入步骤(b2.4),否则进入步骤(b2.5);
(b2.4)将消息流标识与发布者标识的映射关系插入到消息流发布者Hash表中,并进入步骤(b2.8);
(b2.5)将步骤(b2.2)中获得的发布者标识和步骤(b2.3)中查找到的发布者标识进行比较;若两者的值不同,则进入步骤(b2.6),否则进入步骤(b2.7);
(b2.6)根据步骤(b2.2)中获得的消息流标识和发布者标识的映射关系,更新消息流发布者Hash表,并进入到步骤(b2.8);
(b2.7)将步骤(b2.1)中获取的Kafka消息的值,即需要上传的消息,和步骤(b2.2)中获得的消息流标识发送给消息处理程序,并进入步骤(b2.1);
(b2.8)在数据库中更新消息流标识与发布者标识之间的映射关系,并进入步骤(b2.7)。
优选地,上述的双向通信方法,其步骤(b3)包括以下子步骤:
(b3.1)接收消息处理应用层下发的消息和消息流标识;
(b3.2)以消息流标识为键,在消息流发布者Hash表中查找发布者标识映射值;若查找到,进入步骤(b3.3);否则,进入步骤(b3.4);
(b3.3)以查找到的发布者标识的映射值为键,在发布者主题Hash表中查找发布者主题映射值;若查找到,则进入步骤(b3.5);否则,进入步骤(b3.4);
(b3.4)向用户反馈消息下发失败,进入步骤(b3.1);
(b3.5)以步骤(b3.1)接收到的消息流标识为键,以消息内容为值构建Kafka消息,并将该Kafka消息发布到步骤(b3.3)中查找到的发布者主题映射值中,进入步骤(b3.1)。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明所提出的基于Kafka消息中间件的双向通信系统及方法,由于对发布者、订阅者与任意方向消息流的映射关系采用分布式存储机制,因此极大地沿袭了Kafka消息中间件的分布式处理能力,并具备海量实时通信能力;
(2)本发明所提出的基于Kafka消息中间件的双向通信系统及方法,通过建立发布者、订阅者与消息流的映射关系,在消息订阅者中维护了消息流标识与发布者的映射关系、以及发布者与发布者主题之间的映射关系,实现了基于Kafka消息中间件的双向通信,解决了现有Kafka消息中间件不支持反方向消息转发的问题;
相比于现有技术而言,本发明提出的基于Kafka消息中间件的双向通信具备分布式处理、高吞吐量、高可靠性等优势,并且可以支持任意应用接入、处理任意类型通信协议;本发明提供的这种系统及方法可应用于某些需要反方向通信的环境,譬如工业现场监控、智能家居等应用场景,进行双向的数据采集与控制。
附图说明
图1是本发明实施例中的基于Kafka消息中间件的双向通信系统的系统结构示意图;
图2是本发明实施例中发布者初始化流程示意图;
图3是本发明实施例中发布者消息上传流程示意图;
图4是本发明实施例中发布者消息下发流程示意图;
图5是本发明实施例中订阅者初始化流程示意图;
图6是本发明实施例中订阅者消息上传流程示意图;
图7是本发明实施例中订阅者消息下发流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的核心在于充分利用Kafka消息中间件的主题和主题分区,将发布者主题与发布者相关联,以使订阅者能够精准地将消息发送到相应的发布者。
如图1所示,是基于Kafka消息中间件的双向通信系统的系统结构示意图,该系统包括发布者、订阅者、Kafka集群以及数据库;发布者和订阅者都包含了Kafka生产者和Kafka消费者,两者都具有向Kafka集群发布和从Kafka集群接收消息的能力;
其中,发布者的功能包括:与消息流进行通信、向Kafka集群发布上传消息和从Kafka集群接收下发消息;订阅者的功能包括:与其他应用程序通信获取或者产生下发消息、向Kafka集群发布下发消息和从Kafka集群接收上传消息。
数据库用于保存所有的消息流标识和发布者标识的映射关系;实施例中,使用Redis分布式内存数据库来存储该映射关系;Redis分布式内存数据库在本发明这种短时大量的查询场景中具有极高的访问效率;订阅者中具有一张维护消息流标识到发布者标识映射关系的消息流发布者Hash表、发布者标识到发布者主题映射关系的发布者主题Hash表;发布者、发布者标识和发布者主题具有一一对应的关系且全局唯一;发布者具有维护消息流标识到外部消息流映射关系的消息流标识Hash表。
实施例中,基于上述的双向通信系统,提供的基于Kafka消息中间件的双向通信方法,包括发布者处理过程和订阅者处理过程;
其中,发布者处理过程包括以下步骤:
(a1)发布者初始化:发布者从配置文件中获取相关配置,包括发布者主题、用于上传消息的订阅者主题、发布者标识;对消息流标识Hash表进行初始化处理,从Kafka集群订阅发布者主题;
实施例中,相关配置包括发布者主题、拟发布消息的主题、发布者标识,以及Kafka集群IP地址;
(a2)发布者消息上传:当外部消息流中有消息需要上传时,发布者从外部消息流中获取上传信息;
以该上传消息为基础构建Kafka消息,并将此Kafka消息发布到Kafka集群中当前发布者上传消息的订阅者主题下;
(a3)发布者消息下发:当发布者从Kafka集群接收到需要下发的Kafka消息,解析Kafka消息取出拟下发的消息,将拟下发的消息发送到指定的外部消息流;
其中,订阅者处理过程包括以下步骤:
(b1)订阅者初始化:订阅者从配置文件中读取相关配置,包括订阅者主题、发布者标识与发布者主题的映射关系;消息流发布者Hash表和消息流主题Hash表进行初始化处理,并从Kafka集群订阅订阅者主题;
(b2)订阅者消息上传:当订阅者从Kafka集群接收到拟上传的Kafka消息,根据Kafka消息更新消息流标识与发布者标识之间的映射关系,从Kafka消息中将抽取应用层消息,并发送给第三方应用程序进行处理;
(b3)订阅者消息下发:当订阅者收到其他程序需要下发的信息或者产生需要下发的消息时,订阅者以下发消息为基础构建Kafka消息,并将Kafka消息发布到Kafka集群相应的主题下。
图2所示,是实施例中步骤(a1)的发布者初始化的流程示意图,具体包括如下的步骤:
S201,从配置文件读取发布者主题、用于上传消息的订阅者主题和发布者标识;
S202,初始化一张维护从消息流标识到外部消息流映射关系的消息流标识Hash表;
S203,从Kafka集群订阅发布者主题;
S204,启动用于执行消息上传流程的线程;
S205,启动用于执行消息下发流程的线程。
图3所示,是实施例中步骤(a2)的发布者消息上传流程的示意图,具体包括如下的步骤:
S301,从外部消息流获取一条需要上传的消息;
S302,在发布者标识和消息流标识之间添加“:”字符并按字符串相连接的方式组合起来构成Kafka消息的键,以步骤S301中从外部消息流获取的上传消息的内容构成Kafka消息的值,并发布到用于上传消息的订阅者主题;
S303,判断是否有新的外部消息流加入到发布者,若是,则进入步骤S304;若否,则进入步骤S301;
S304,生成一个随机数作为新的外部消息流的消息流标识;
S305,判断步骤S304中生成的新的消息流标识是否已经存在于消息流标识Hash表中,若是,则进入步骤S304;若否,则进入步骤S306;
S306,将新的消息流标识和外部消息流的映射关系插入到消息流标识Hash表中,并进入步骤S301。
图4所示,是实施例中步骤(a3)的发布者消息下发流程的示意图,具体包括如下的步骤:
S401,从Kafka集群获取Kafka消息;
S402,取出步骤S401中获取的Kafka消息的键,Kafka消息的键即是消息流标识,以消息流标识为键在消息流标识Hash表中查找外部消息流映射值;
S403,将取到的Kafka消息的值,即下发消息的内容,发送给步骤S402中确定的外部消息流,进入步骤S401。
图5所示,是实施例中步骤(b1)的订阅者初始化流程的示意图,具体包括如下的步骤:
S501,初始化一张维护从发布者标识到发布者主题映射关系的发布者主题Hash表;
S502,从配置文件中读取订阅者主题;
S503,从配置文件中读取发布者标识到发布者主题映射关系并插入到发布者主题Hash表中;
S504,初始化一张维护从消息流标识到发布者标识映射关系的消息流发布者Hash表;
S505,从Kafka集群订阅需要订阅的主题以获取上传的Kafka消息;
S506,启动用于执行消息上传流程的线程;
S507,启动用于执行消息下发流程的线程。
图6所示,是实施例中步骤(b2)的订阅者消息上传流程的示意图,具体包括如下的步骤:
S601,从Kafka集群获取需要上传的Kafka消息;
S602,以“:”字符为分割标志以字符串拆分的方式拆解Kafka消息的键以获得消息流标识和发布者标识;
S603,以消息流标识为键在消息流发布者Hash表中查找发布者标识映射值,如果没有查找到发布者标识映射值,则进入步骤S604;如果查找到了发布者标识映射值,则进入步骤S605;
S604,将消息流标识和发布者标识的映射关系插入到消息流发布者Hash表中,并进入步骤S608;
S605,将步骤S602中分析得到的发布者标识和步骤S603中查找到的发布者标识相比较,若两者不同,进入步骤S606;否则进入步骤S607;
S606,将步骤S602分析得到的消息流标识和发布者标识的映射关系更新到消息流发布者Hash表中,并进入步骤S608;
S607,将步骤S601中获取的Kafka消息的值,即需要上传的消息,和步骤S602中获得的消息流标识发送给外部消息处理程序,并进入步骤S601;
S608,将新的消息流标识和发布者标识的映射关系更新到数据库中,并进入步骤S607。
图7所示,是实施例中步骤(b2)的订阅者消息下发流程的示意图,具体包括如下的步骤:
S701,从消息处理程序接收需要下发的消息和消息流标识;
S702,以消息流标识为键在消息流发布者Hash表中查找发布者标识映射值,若没有查找到发布者标识映射值就进入步骤S704,否则进入步骤S703;
S703,以步骤S702中查找到的发布者标识为键在发布者主题Hash表中查找发布者主题映射值,若没有查找到发布者主题映射值就进入步骤S704;如果查找到了发布者主题映射值就进入步骤S705;
S704,通知用户消息下发失败,并进入步骤S701;
S705,以步骤S701接收到的消息流标识为键,以下发消息内容为值构建下发的Kafka消息,并将Kafka消息发布到步骤S703中查找到的发布者主题中,进入步骤S701。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于Kafka消息中间件的双向通信系统,其特征在于,包括发布者、订阅者、Kafka集群以及数据库;
所述发布者和订阅者均包含Kafka生产者和Kafka消费者,且均具有向Kafka集群发布和从Kafka集群接收消息的能力;
所述发布者用于与消息流进行通信、向Kafka集群发布上传消息、从Kafka集群接收下发消息;所述订阅者用于与其他应用程序通信,获取或者生成下发消息、向Kafka集群发布下发消息、从Kafka集群接收上传消息;所述数据库用于存储消息流标识与发布者标识之间的映射关系。
2.如权利要求1所述的双向通信系统,其特征在于,采用分布式内存数据库存储所述映射关系,以提高短时大量查询的访问效率。
3.如权利要求1或2所述的双向通信系统,其特征在于,
所述订阅者中具有一张维护消息流标识与发布者标识之间映射关系的消息流发布者Hash表、一张发布者标识与发布者主题之间映射关系的发布者主题Hash表;所述发布者、发布者标识与发布者主题具有一一对应的关系且全局唯一;
所述发布者中具有一张维护消息流标识与外部消息流映射关系的消息流标识Hash表。
4.一种基于权利要求1~3任一项所述的双向通信系统的基于Kafka消息中间件的双向通信方法,包括发布者处理过程和订阅者处理过程;其特征在于,
所述发布者处理过程包括以下步骤:
(a1)发布者从配置文件中获取配置,并对消息流标识Hash表进行初始化处理,从Kafka集群订阅发布者主题;所述配置包括发布者主题、用于上传消息的订阅者主题,以及发布者标识;
(a2)当外部消息流中有需要上传的消息时,发布者从外部消息流中获取上传信息;
并以所述上传消息为基础构建Kafka消息,并将所述Kafka消息发布到Kafka集群中当前发布者上传消息的订阅者主题下;
(a3)当发布者从Kafka集群接收到需要下发的Kafka消息,解析Kafka消息获取拟下发的消息,将拟下发的消息发送到指定的外部消息流;
所述订阅者处理过程包括以下步骤:
(b1)由订阅者从配置文件中读取配置,并对消息流发布者Hash表和消息流主题Hash表进行初始化处理,并从Kafka集群订阅订阅者主题;
所述配置包括订阅者主题、发布者标识与发布者主题的映射关系;
(b2)当订阅者从Kafka集群接收到拟上传的Kafka消息,根据Kafka消息更新消息流标识与发布者标识之间的映射关系,从Kafka消息中获取应用层消息并发送到第三方应用程序;
(b3)当订阅者自身产生拟下发消息或者收到第三方应用程序的拟下发信息时,订阅者以所述拟下发消息为基础构建Kafka消息,并将Kafka消息发布到Kafka集群的主题下。
5.如权利要求4所述的双向通信方法,其特征在于,所述步骤(a2)包括以下子步骤:
(a2.1)从外部消息流获取拟上传的消息;
(a2.2)在发布者标识与消息流标识之间添加分隔符,并按字符串相连接的方式组合构成Kafka消息的键,以从外部消息流获取的拟上传消息的内容构成Kafka消息的值,并发布到用于上传消息的订阅者主题;
(a2.3)判断是否有新的外部消息流加入到发布者,若是,则进入步骤(a2.4);若否,则进入步骤(a2.1);
(a2.4)生成一个随机数作为新的外部消息流的消息流标识;
(a2.5)判断步骤(a2.4)中生成的新的消息流标识是否已经存在于消息流标识Hash表中,若是,则进入步骤(a2.4);若否,则进入步骤(a2.6);
(a2.6)将新的消息流标识与外部消息流的映射关系插入到消息流标识Hash表中,进入步骤(a2.1)。
6.如权利要求4所述的双向通信方法,其特征在于,所述步骤(a3)包括以下子步骤:
(a3.1)从Kafka集群获取Kafka消息;
(a3.2)获取所述Kafka消息的消息流标识,并以所述消息流标识为键在消息流标识Hash表中查找外部消息流映射值;
(a3.3)获取Kafka消息的值;并根据所述外部消息流映射值确定外部消息流,将Kafka消息的值发送给所述外部消息流,并进入步骤(a3.1)。
7.如权利要求4所述的双向通信方法,其特征在于,所述步骤(b2)包括以下子步骤:
(b2.1)从Kafka集群获取需要上传的Kafka消息;
(b2.2)以分隔符为分割标志、以字符串拆分的方式分割Kafka消息的键,以获得消息流标识和发布者标识;
(b2.3)以所述消息流标识为键在消息流发布者Hash表中查找发布者标识,若没有查找到发布者标识映射值,则进入步骤(b2.4),否则进入步骤(b2.5);
(b2.4)将消息流标识与发布者标识的映射关系插入到消息流发布者Hash表中,并进入步骤(b2.8);
(b2.5)将步骤(b2.2)中获得的发布者标识和步骤(b2.3)中查找到的发布者标识进行比较;若两者的值不同,则进入步骤(b2.6),否则进入步骤(b2.7);
(b2.6)根据步骤(b2.2)中获得的消息流标识和发布者标识的映射关系,更新消息流发布者Hash表,并进入到步骤(b2.8);
(b2.7)将需要上传的Kafka消息和步骤(b2.2)中获得的消息流标识发送给消息处理层,并进入步骤(b2.1);
(b2.8)在数据库中更新消息流标识与发布者标识之间的映射关系,并进入步骤(b2.7)。
8.如权利要求4所述的双向通信方法,其特征在于,所述步骤(b3)包括以下子步骤:
(b3.1)接收应用层下发的消息和消息流标识;
(b3.2)以所述消息流标识为键,在消息流发布者Hash表中查找发布者标识映射值;若查找到发布者标识映射值,进入步骤(b3.3);否则,进入步骤(b3.4);
(b3.3)以所述发布者标识映射值为键,在发布者主题Hash表中查找发布者主题映射值;若查找到发布者主题映射值,则进入步骤(b3.5);否则,进入步骤(b3.4);
(b3.4)向用户反馈消息下发失败,进入步骤(b3.1);
(b3.5)以所述消息流标识为键、以消息内容为值构建Kafka消息,并将所述Kafka消息发布到所述发布者主题映射值中,并进入步骤(b3.1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610630955.4A CN106293968B (zh) | 2016-08-04 | 2016-08-04 | 一种基于Kafka消息中间件的双向通信系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610630955.4A CN106293968B (zh) | 2016-08-04 | 2016-08-04 | 一种基于Kafka消息中间件的双向通信系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106293968A true CN106293968A (zh) | 2017-01-04 |
CN106293968B CN106293968B (zh) | 2019-05-10 |
Family
ID=57665123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610630955.4A Expired - Fee Related CN106293968B (zh) | 2016-08-04 | 2016-08-04 | 一种基于Kafka消息中间件的双向通信系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106293968B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106878415A (zh) * | 2017-02-15 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 数据消费的负载均衡方法及装置 |
CN107273228A (zh) * | 2017-07-13 | 2017-10-20 | 焦点科技股份有限公司 | 基于星型拓扑架构的消息传输方法 |
CN107295106A (zh) * | 2017-07-31 | 2017-10-24 | 杭州多麦电子商务股份有限公司 | 消息数据服务集群 |
CN107360082A (zh) * | 2017-07-28 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种发布/订阅方法及装置 |
CN107995026A (zh) * | 2017-11-16 | 2018-05-04 | 中国银行股份有限公司 | 基于中间件的管控方法、管理节点、受管节点及系统 |
CN108038007A (zh) * | 2017-11-30 | 2018-05-15 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及系统 |
CN108063803A (zh) * | 2017-12-04 | 2018-05-22 | 深圳狗尾草智能科技有限公司 | 基于分布式订阅发布消息系统的消息管理方法及系统 |
CN108134814A (zh) * | 2017-11-27 | 2018-06-08 | 海尔优家智能科技(北京)有限公司 | 一种业务数据处理方法及装置 |
CN108282514A (zh) * | 2017-12-12 | 2018-07-13 | 北京奇艺世纪科技有限公司 | 一种分布式业务建立方法及装置 |
CN108390881A (zh) * | 2018-02-27 | 2018-08-10 | 北京焦点新干线信息技术有限公司 | 一种分布式高并发实时消息推送方法及系统 |
CN108769099A (zh) * | 2018-04-02 | 2018-11-06 | 武汉斗鱼网络科技有限公司 | 一种消息中间件的消息去重的实现方法 |
CN108965355A (zh) * | 2017-05-18 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 用于数据传输的方法、装置及计算机可读存储介质 |
CN109088933A (zh) * | 2018-08-21 | 2018-12-25 | 中国平安人寿保险股份有限公司 | 大批量名单传送方法、获取方法及相应的装置、电子设备 |
CN109325200A (zh) * | 2018-07-25 | 2019-02-12 | 北京京东尚科信息技术有限公司 | 获取数据的方法、装置及计算机可读存储介质 |
CN109583927A (zh) * | 2017-09-29 | 2019-04-05 | 北京国双科技有限公司 | 数据处理方法和装置 |
CN109783253A (zh) * | 2018-12-28 | 2019-05-21 | 南京唯实科技有限公司 | 基于kafka的分布式消息数据总线 |
CN109901948A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 无共享数据库集群异地双活容灾系统 |
CN110019240A (zh) * | 2017-12-29 | 2019-07-16 | 中国移动通信集团北京有限公司 | 一种业务数据交互方法、装置及系统 |
CN110572461A (zh) * | 2019-09-11 | 2019-12-13 | 宝付网络科技(上海)有限公司 | 一种基于生产与消费模式的中间服务系统 |
CN110868322A (zh) * | 2019-11-15 | 2020-03-06 | 北京京东尚科信息技术有限公司 | 分布式消息服务的网络管理方法、系统、设备及存储介质 |
CN111541824A (zh) * | 2020-04-21 | 2020-08-14 | 北京思特奇信息技术股份有限公司 | 一种用于通讯信息传递的方法及系统 |
CN113452667A (zh) * | 2021-03-05 | 2021-09-28 | 浙江华云信息科技有限公司 | 一种适用于多种协议类型的边缘物联终端接入方法 |
WO2022037293A1 (zh) * | 2020-08-18 | 2022-02-24 | 中兴通讯股份有限公司 | 消息中间件的布局方法、装置、服务器及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1953426A (zh) * | 2005-10-19 | 2007-04-25 | 国际商业机器公司 | 用于管理订阅的发布/订阅系统和方法 |
US20090125489A1 (en) * | 2005-06-24 | 2009-05-14 | David Alexander Barker | Message generator |
US20090182825A1 (en) * | 2007-07-04 | 2009-07-16 | International Business Machines Corporation | Method and system for providing source information of data being published |
CN102917016A (zh) * | 2012-09-12 | 2013-02-06 | 华中科技大学 | 一种基于内容的发布订阅模型的拓扑结构优化方法 |
CN103166975A (zh) * | 2013-04-03 | 2013-06-19 | 上海航天测控通信研究所 | 一种dds通信系统 |
CN103841206A (zh) * | 2014-03-17 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种订阅和发布主题消息的方法 |
CN104754036A (zh) * | 2015-03-06 | 2015-07-01 | 合一信息技术(北京)有限公司 | 一种基于kafka的消息处理系统及处理方法 |
-
2016
- 2016-08-04 CN CN201610630955.4A patent/CN106293968B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090125489A1 (en) * | 2005-06-24 | 2009-05-14 | David Alexander Barker | Message generator |
CN1953426A (zh) * | 2005-10-19 | 2007-04-25 | 国际商业机器公司 | 用于管理订阅的发布/订阅系统和方法 |
US20090182825A1 (en) * | 2007-07-04 | 2009-07-16 | International Business Machines Corporation | Method and system for providing source information of data being published |
CN102917016A (zh) * | 2012-09-12 | 2013-02-06 | 华中科技大学 | 一种基于内容的发布订阅模型的拓扑结构优化方法 |
CN103166975A (zh) * | 2013-04-03 | 2013-06-19 | 上海航天测控通信研究所 | 一种dds通信系统 |
CN103841206A (zh) * | 2014-03-17 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种订阅和发布主题消息的方法 |
CN104754036A (zh) * | 2015-03-06 | 2015-07-01 | 合一信息技术(北京)有限公司 | 一种基于kafka的消息处理系统及处理方法 |
Non-Patent Citations (1)
Title |
---|
王岩 等: "一种基于Kafka的可靠的Consumer的设计方案", 《软件》 * |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106878415A (zh) * | 2017-02-15 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 数据消费的负载均衡方法及装置 |
CN106878415B (zh) * | 2017-02-15 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 数据消费的负载均衡方法及装置 |
CN108965355A (zh) * | 2017-05-18 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 用于数据传输的方法、装置及计算机可读存储介质 |
CN108965355B (zh) * | 2017-05-18 | 2021-05-25 | 北京京东尚科信息技术有限公司 | 用于数据传输的方法、装置及计算机可读存储介质 |
CN107273228A (zh) * | 2017-07-13 | 2017-10-20 | 焦点科技股份有限公司 | 基于星型拓扑架构的消息传输方法 |
CN107273228B (zh) * | 2017-07-13 | 2020-09-04 | 焦点科技股份有限公司 | 基于星型拓扑架构的消息传输方法 |
CN107360082A (zh) * | 2017-07-28 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种发布/订阅方法及装置 |
CN107360082B (zh) * | 2017-07-28 | 2020-08-25 | 苏州浪潮智能科技有限公司 | 一种发布/订阅方法及装置 |
CN107295106B (zh) * | 2017-07-31 | 2020-08-14 | 杭州多麦电子商务股份有限公司 | 消息数据服务集群 |
CN107295106A (zh) * | 2017-07-31 | 2017-10-24 | 杭州多麦电子商务股份有限公司 | 消息数据服务集群 |
CN109583927A (zh) * | 2017-09-29 | 2019-04-05 | 北京国双科技有限公司 | 数据处理方法和装置 |
CN107995026A (zh) * | 2017-11-16 | 2018-05-04 | 中国银行股份有限公司 | 基于中间件的管控方法、管理节点、受管节点及系统 |
CN107995026B (zh) * | 2017-11-16 | 2021-07-30 | 中国银行股份有限公司 | 基于中间件的管控方法、管理节点、受管节点及系统 |
CN108134814A (zh) * | 2017-11-27 | 2018-06-08 | 海尔优家智能科技(北京)有限公司 | 一种业务数据处理方法及装置 |
CN108134814B (zh) * | 2017-11-27 | 2020-12-22 | 海尔优家智能科技(北京)有限公司 | 一种业务数据处理方法及装置 |
CN108038007A (zh) * | 2017-11-30 | 2018-05-15 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及系统 |
CN108038007B (zh) * | 2017-11-30 | 2022-04-05 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及系统 |
CN108063803B (zh) * | 2017-12-04 | 2020-10-13 | 苏州狗尾草智能科技有限公司 | 基于分布式订阅发布消息系统的消息管理方法及系统 |
CN108063803A (zh) * | 2017-12-04 | 2018-05-22 | 深圳狗尾草智能科技有限公司 | 基于分布式订阅发布消息系统的消息管理方法及系统 |
CN108282514B (zh) * | 2017-12-12 | 2020-11-27 | 北京奇艺世纪科技有限公司 | 一种分布式业务建立方法及装置 |
CN108282514A (zh) * | 2017-12-12 | 2018-07-13 | 北京奇艺世纪科技有限公司 | 一种分布式业务建立方法及装置 |
CN110019240B (zh) * | 2017-12-29 | 2021-11-09 | 中国移动通信集团北京有限公司 | 一种业务数据交互方法、装置及系统 |
CN110019240A (zh) * | 2017-12-29 | 2019-07-16 | 中国移动通信集团北京有限公司 | 一种业务数据交互方法、装置及系统 |
CN108390881A (zh) * | 2018-02-27 | 2018-08-10 | 北京焦点新干线信息技术有限公司 | 一种分布式高并发实时消息推送方法及系统 |
CN108390881B (zh) * | 2018-02-27 | 2021-06-15 | 北京焦点新干线信息技术有限公司 | 一种分布式高并发实时消息推送方法及系统 |
CN108769099A (zh) * | 2018-04-02 | 2018-11-06 | 武汉斗鱼网络科技有限公司 | 一种消息中间件的消息去重的实现方法 |
CN108769099B (zh) * | 2018-04-02 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种消息中间件的消息去重的实现方法 |
CN109325200A (zh) * | 2018-07-25 | 2019-02-12 | 北京京东尚科信息技术有限公司 | 获取数据的方法、装置及计算机可读存储介质 |
CN109088933A (zh) * | 2018-08-21 | 2018-12-25 | 中国平安人寿保险股份有限公司 | 大批量名单传送方法、获取方法及相应的装置、电子设备 |
CN109783253A (zh) * | 2018-12-28 | 2019-05-21 | 南京唯实科技有限公司 | 基于kafka的分布式消息数据总线 |
CN109901948A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 无共享数据库集群异地双活容灾系统 |
CN109901948B (zh) * | 2019-02-18 | 2022-04-12 | 国家计算机网络与信息安全管理中心 | 无共享数据库集群异地双活容灾系统 |
CN110572461A (zh) * | 2019-09-11 | 2019-12-13 | 宝付网络科技(上海)有限公司 | 一种基于生产与消费模式的中间服务系统 |
CN110868322A (zh) * | 2019-11-15 | 2020-03-06 | 北京京东尚科信息技术有限公司 | 分布式消息服务的网络管理方法、系统、设备及存储介质 |
CN110868322B (zh) * | 2019-11-15 | 2023-04-07 | 北京京东尚科信息技术有限公司 | 分布式消息服务的网络管理方法、系统、设备及存储介质 |
CN111541824A (zh) * | 2020-04-21 | 2020-08-14 | 北京思特奇信息技术股份有限公司 | 一种用于通讯信息传递的方法及系统 |
CN111541824B (zh) * | 2020-04-21 | 2021-11-26 | 北京思特奇信息技术股份有限公司 | 一种用于通讯信息传递的方法及系统 |
WO2022037293A1 (zh) * | 2020-08-18 | 2022-02-24 | 中兴通讯股份有限公司 | 消息中间件的布局方法、装置、服务器及存储介质 |
CN113452667A (zh) * | 2021-03-05 | 2021-09-28 | 浙江华云信息科技有限公司 | 一种适用于多种协议类型的边缘物联终端接入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106293968B (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293968A (zh) | 一种基于Kafka消息中间件的双向通信系统及方法 | |
CN107079059A (zh) | 区块链存储方法、装置及节点设备 | |
CN100428233C (zh) | 用于搜索的方法和设备 | |
KR101445950B1 (ko) | 스케일러블 데이터 구조를 이용하기 위한 방법 및 장치 | |
US8595380B2 (en) | Message bus based replication | |
WO2019174414A1 (zh) | 图像检索方法、装置、系统、服务器以及存储介质 | |
CN105701096A (zh) | 索引生成方法、数据查询方法、装置及系统 | |
US8296372B2 (en) | Method and system for merging electronic messages | |
CN103139241A (zh) | 网络资源文件的离线下载系统和方法 | |
WO2011134314A1 (zh) | 网络中好友动态信息管理方法、系统及服务器 | |
CN105869057B (zh) | 评论存储设备、评论读取、评论写入方法及装置 | |
EP3688698B1 (en) | System of mobile notification delivery utilizing bloom filters | |
US9871754B2 (en) | Communicating messages between publishers and subscribers in a mesh routing network | |
US20120233265A1 (en) | Proxy communications on a social network | |
CN107423635A (zh) | 一种应用共享方法及其装置、用户终端 | |
CN104506624A (zh) | 一种社交信息管理系统及管理方法 | |
CN103326925A (zh) | 一种消息推送方法及装置 | |
US20190182356A1 (en) | Data networking method in data-centric network system and apparatus implementing same | |
US8984007B2 (en) | Method and apparatus using a hierachical searching scheme among virtual private communities | |
CN115865844B (zh) | 基于sdn与ndn的虚实结合动态流量调度方法及装置 | |
KR20110070447A (ko) | 데이터 분배 서비스에서 통신 참여자의 분산 발견 방법 | |
US10686877B2 (en) | Network communication method, peers, and network communication system | |
CN101543017B (zh) | 加入对等网络的设备和方法 | |
US20130058333A1 (en) | Method For Handling Requests In A Storage System And A Storage Node For A Storage System | |
KR20180004794A (ko) | 관계 체인 처리 방법 및 시스템, 그리고 저장 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190510 Termination date: 20200804 |
|
CF01 | Termination of patent right due to non-payment of annual fee |