我正在开发我的第一个微服务,我选择将其部署在云功能服务中,并通过Pub/Sub进行消息传递。
云功能服务是由Pub/Sub主题中的事件(发布的消息(触发的,微服务处理消息,到目前为止效果良好。我知道云功能可以保证消息的确认和传递,这很好。
云函数服务具有自动重试功能:如果我在代码中抛出异常,则会执行新的程序。为了避免在连续失败时循环执行,我引入了一个if条件来检查消息的"年龄",因为我不想简单地丢弃消息,所以我将其发送/发布到另一个Pub/Sub主题,我将其命名为";我的死信队列";话题
由于我现在对一切都不确定,我问你:我的方法足够好吗?考虑到云功能微服务和Pub/Sub消息,你会怎么做?
是的,如果你想根据消息年龄——在死信主题中发送坏消息的规则——你的方法是好的。
如果你想在失败次数上做到这一点(5次失败后,将消息放在死信主题中(,那么直接在PubSub上插入云功能是无法实现的。你需要创建一个HTTP函数,然后创建PubSub推送订阅,在订阅上你可以设置一个死信主题(在死信主题中自动发送消息之前,第5分钟失败(。
第二种解决方案的优点是,您无需处理消息并将其推送到云功能中的pubsub(所有处理时间都需要花钱(,它是自动的,因此您可以节省资金;(
每次遇到异常并将其插入死信主题时,您尝试使用的方法都很好。每次您试图在未来实现异常处理而没有任何问题时,它都会起作用,但如果您想加入更多的异常,您应该考虑更改管理异常的方式。
在这里,您可以看到如何在gcloud命令行中发布消息