【发布时间】:2019-07-22 18:49:42
【问题描述】:
我是微服务架构的新手,想创建一个集中式通知微服务来向用户发送电子邮件/短信。
我的第一个选择是创建一个通知 Kafka 队列,所有其他微服务都可以向其中发送通知。然后通知微服务会监听这个队列并相应地发送消息。如果通知服务重新启动或关闭,我们不会丢失任何消息,因为消息将存储在队列中。
我的第二个选择是在通知微服务上添加通知消息 API。这将使所有其他微服务更容易,因为它们只需调用 API 而不是与队列集成。然后 API 会在内部将消息发送到通知 Kafka 队列并发送消息。这里唯一的问题是,如果 API 不可用或出现错误,我们将丢失消息。
关于处理此问题的最佳方法有什么建议吗?
【问题讨论】:
-
选项一是正确的方法。正如您已经提到的,即使通知不可用,您也可以稍后发送消息。微服务的重点是异步通信,这就是你要做的事情。
标签: microservices