首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于交换RabbitMq和Kafka消息系统的设计模式

用于交换RabbitMq和Kafka消息系统的设计模式
EN

Software Engineering用户
提问于 2017-05-10 07:19:58
回答 1查看 569关注 0票数 -5

这是一个相当普遍的问题。

我想设计一组类和接口,这样我就可以在消息传递系统之间进行交换,而不必更改代码,可能是在RabbitMq和Kafka之间。

我主要关心的是如何抽象它们所处理的事件,因为这两个系统都需要事件处理程序,但是,当然,这两个系统上的事件处理程序是不同的。

EN

回答 1

Software Engineering用户

发布于 2017-05-10 07:33:59

我建议将业务逻辑模块与通信模块分离。

业务逻辑模块负责数据处理,并与通信逻辑模块有一些接口。

通信模块将只负责接收和发送消息,除基本数据验证外,不进行任何数据处理。通信模块将实现战略模式,其中业务逻辑模块将调用通信模块的公开接口,该接口将有两个实现:一个使用RabbitMq,另一个使用卡夫卡。

假设您的应用程序具有相同的业务逻辑,无论您使用的是RabbitMq还是Kafka (否则您不会问这个问题),您将抽象该业务逻辑,而不是事件处理程序本身。

假设兔子Mq有一个ShutDown事件处理程序,而Kafka有一个叫做停止事件处理程序的东西(可能不是,但为了参数起见)。这个功能将通过ICommunication接口抽象(例如),使用StopWorking方法。然后,RabbitMq将使用ShutDown实现它,而Kafka将使用Stop实现它。业务逻辑模块将看到ICommunication.StopWorking。除此之外发生的一切都与它无关,并与这部分分离开来。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/348667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档