我们有一个小型微服务,其唯一目的是通过队列接收消息并将它们发送到外部系统。消息可以来自任何数量的其他服务,并且该服务不了解消息的内容。外部系统可以接受或拒绝此消息。我看到许多用于处理外部系统响应的选项:
我倾向于选择第三个选项来分离关注点,而不是用错误流来打扰开心的流程,但我想反馈为什么这可能是一个错误的选择。
是否有可用资源来记录针对此类问题的最佳实践解决方案?
(我知道上面可以重写为从队列读取的服务,并将消息存储在db中,异步将消息发送到外部系统,并将响应存储在db中,发布事件以指示消息是处理并开发了一个api以允许从db检索响应,但这将需要一个额外的db,更多的工作和更多的资源,在我看来这是过大的努力
答案 0 :(得分:2)
我也会选择第三个选项,出于几个原因将您的疑虑分开。
值得注意的是,消息代理并不像数据库那样用于长期数据存储。如果您打算将响应详细信息保留一段时间,则可能需要将它们转移到数据库中。