有许多书籍和博客详细说明了微服务之间基于事件的通信如何比直接相互调用的服务更容易维护。
然而,如何在AWS世界中实施?我在考虑主题,但它远非理想。
这种模式通常如何实现,以保证延迟,持久性,有保证的传递,幂等性等。
答案 0 :(得分:0)
这里肯定有一些选择:
不确定为什么你认为主题远非理想?
SNS主题专为事件设计:
关于它。
优点:
缺点:
这不是特定于AWS的,但另一种方法是让每个发布者公开允许消费者轮询新事件的API。通常,事件存储数据库存储事件,并且API允许缓存和检索新事件,因为X'语义。
Atom协议经常用于以这种方式发布事件。
优点:
缺点:
我不熟悉其他语言,但在.NET世界中,有两个大项目提供服务总线语义 - NServiceBus和Mass Transit
两者都提供一系列的运输服务'用于活动交流。 NServiceBus有一个开源AWS SQS插件,可以使用SQS队列作为传输,但在编写本文时,NServiceBus会在每个发布者的本地持久性中维护订阅(然后,每个事件在发布到本地持久列表中的每个订阅者时转发)订阅)。
如果您能澄清您对SNS主题的疑虑,我很乐意扩大答案。