请教象友们一个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吗?有没有象友有相关经验请指教,感谢。
@Luciferre 个人思路给message一个sequence id,conumer 处理完后 回一个 ack with last sequence id,producer 这边收到 ack后check一下和上一次处理的 sequence id有没有 skip message。
自动处理的话,无非就是对有问题的consumer repush 漏掉的message,出问题超过一定次数mark 成 unheath status。
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。