本文共 270 字,大约阅读时间需要 1 分钟。
在做消费队列的时候,我们会开启消费进程来消费队列,但是我们避免不了业务逻辑的修改需要重启进程,当一个进程正在消费一个消息,如果粗暴的Kill进程很明显会导致数据不一致,除非完全使用数据库来做队列,并做好了事务的支持。
一个可行的方式是,当我们使用stop,restart来控制我们的进程的时候,可以不直接操作进程,而是往cache组件或者共享内存或者文件写入一个标志,并且监视我们要关闭的进程;另外,消费进程每次拉取消息之前先判断一下这个标志,如果是关闭指令,那就exit;然后stop指令找不到进程了就可以提示进程已被关闭,并且删除标志。
转载地址:http://mgxui.baihongyu.com/