寻求发布/订阅系统的澄清,以及API网关如何发挥作用

问题描述 投票:0回答:1

我是微服务架构的新手,我希望了解服务之间应该/如何相互作用。

接受我当前的故事要求我:

  • 通过电子邮件发送文档
  • 备份通过电子邮件发送的文档
  • 将相关信息持久保存到备份中

我的客户是我们在过去三年中开发的一个整体项目。这里的目标是将这个大型项目逐步发展为小型微服务项目。

因此,我的整体项目可以使用连接的服务来调用一个(或多个)API调用。无需向此客户端返回任何内容,因此在这种情况下,“即发即弃”后的呼叫就足够了。

所以我的迭代方法是首先使发送电子邮件服务。效果很好。我的整体客户端调用了存在于微服务中的发送电子邮件。

然后我开始添加备份。它已经有代码气味。我无法发送而没有备份,因此我已经在耦合两个需求。但是我还是继续前进。

当我要添加持久性时,我停下了脚步。如果备份和发送对于耦合产生的代码异味而言已经足够严重,则发送,备份

持久化是不可接受的。

所以我的看法是,这里有三项服务需要等待吗?电子邮件,备份并保留。

哪个带给我我的问题。我该如何设计解决方案来实现这一目标?

我是否需要API网关来接受较大的DTO,然后网关将数据拆分为较小的DTO,以发送适当的服务?

我如何处理每个服务ID取决于上一个调用的事实?例如电子邮件发送,需要发送结果,进行备份,例如,需要发送文件路径。

我已经研究过RabbitMQ,我想我理解了这个主意,但是我正在苦苦挣扎的另一件事是,我看到的所有图表都显示了客户端,它们指向一个调用许多API端点的网关,但是随后我看到了实现示例始终将“消息队列”服务作为控制台应用程序]

我是微服务架构的新手,我希望了解服务之间应该/如何进行交互。要接受我当前的故事,我需要:通过电子邮件发送文档备份...

asp.net-core rabbitmq microservices dto api-gateway
1个回答
0
投票

也许您可以查看NServiceBus。它是一个用于发送消息的开源库。控制台应用程序是endpoint。它可以使用RabbitMQ来transport消息。

© www.soinside.com 2019 - 2024. All rights reserved.