请教象友们一个swe design面试题 

面试官非常infra,问我们有个message queue based service,如果consumer有某个bug没有consume message,应该怎样让producer知道采取什么方法减轻影响?
我的回答就是message queue肯定会有backlog触发monitoring alert然后人工找bug重启consumer。面试官不满意说不能manual,整个系统应该有automatic的方法让producer知道整个service不healthy。
那应该咋回答?让producer constantly check message queue topic有没有backlog?message queue本来就是decouple producer 和consumer的,不懂如果让producer一起unhealthy有什么意义,最终不还是要人工查bug重启service吗?
有没有象友有相关经验请指教,感谢。

フォロー

请教象友们一个swe design面试题 

@Luciferre
个人思路
给message一个sequence id,conumer 处理完后 回一个 ack with last sequence id,
producer 这边收到 ack后check一下和上一次处理的 sequence id有没有 skip message。

自动处理的话,无非就是对有问题的consumer repush 漏掉的message,出问题超过一定次数mark 成 unheath status。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。