2015-05-04 36 views
1

我想讓我的應用程序能夠靈活處理將郵件發送到rabbitmq時可能發生的連接問題。我想抓住所有未發送的消息,將它們存儲並在rabbitmq變爲可用時發送給它們。春季AMQP回調回調與重試回調

看着官方documentation我沒有設法找出返回回調和重試回調之間的區別。我明白,當重試模板耗盡已配置的策略時,會調用重試回調,但由於上下文本身不包含消息,因此不會發現這很有用。 根據在ReturnCallback接口的「returnedMessage」方法中傳遞的「replyCode」,可以很容易地確定進一步的行爲,但是在調用此回調時還沒有弄清楚。

一種方法是ConfirmCallback,但有一個問題是需要保持同步的其他邏輯CorrelationData以及這些消息的消息和狀態。

因此...除了ConfirmCallback接口有沒有更簡單的方法來跟蹤未使用Spring AMQP通過RabbitMQ成功發送的消息?

回答

1

返回是指代理由於無法傳遞消息而返回消息(消息發佈到的交換機上沒有匹配的綁定,並且強制位已設置)。

確認是代理將確認發回給發佈者時,表明消息已成功路由。

重試在代理領域之外,所以它可能是您的用例需要的東西。

+0

感謝您的快速響應。如果「重試」是要走的路,是否有任何示例如何獲取消息本身,因爲我所得到的只是策略本身在上下文映射中?在提到的文檔中,可以自己提取消息,但是在我的代碼中沒有發現它是這種情況。 – tropikalista

+0

正如[文檔](http://docs.spring.io/spring-amqp/docs/1.5.0.BUILD-SNAPSHOT/reference/html/_reference.html#template-retry)中所述,該消息未被製作默認情況下可以在'RetryContext'中使用,但可以通過使用外部'RetryTemplate'而不是在'RabbitTemplate'內配置。我認爲我們應該繼續,並根據上下文中的知名關鍵詞提供信息。請打開一個['改進'JIRA問題](https://jira.spring.io/browse/AMQP),我們會看看,但外部重試模板應該適合您。 –

+0

非常感謝...... – tropikalista