activemq的消息阻塞机制

Activemq消息监听失败后的重发机制

1:当producer发送了一条消息后,listenter中的onMessage方法来接收。当接收失败后抛出RuntimeException。

2:Message里有两个相关的字段Redelivered(再投递)默认为false,redeliveryCounter(计数器)默认为0;

3:当producer发送了一条消息后,转交给proker(相当于代理),再有proker发送给consumer。如果处理失败,本地的redeliveryCounter++。给proker一个特定应答,proker中的message里的redeliveryCounter++,延迟一秒继续调用,默认为6次,同时把Redelivered设为true。超过6次给proker另外一个特定的应答。proker在收到这个应答后就把小消息推送到DLQ(一个死亡队列)中。

4:由于Redelivered和redeliveryCounter没有被持久化,所以当proker重启时,这两个字段恢复到默认值。

猜你喜欢

转载自blog.csdn.net/qq_36881106/article/details/80661349