有人可以告诉我如何使用camel-redis保证交付吗?
我的用例如下: -
from("jetty:http://localhost:8888/hello").to("redis://...")
将消息写入redis后,向http客户端发送成功响应,以便客户端不会被阻止等待响应。
然后在另一个路线中,我想从redis处理消息,如下所示,然后在处理成功时从redis中删除它
from("redis://...").to(...)
答案 0 :(得分:1)
良好的方法 - 它被称为"存储和转发"图案。
并且邮件未发送到最终目的地?
然后 - "尝试/捕捉&#34 ;?尝试发送消息,当失败时,只需将其重新发送到redis。
通常,此模式使用消息传递(JMS)实现,其中消息传递具有一些重要功能:目标,重试计数,重试周期和死信队列等。
使用任何更简单的商店(redis,jdbc,...),您必须自己实现这些消息传递功能。 (我必须管理员,我对Redis并不擅长,但使用简单的JDBC作为消息存储也会出现同样的问题。)
至少添加重试次数和"下次发送时间戳"。如果在预定义计数后没有传递消息会发生什么 - 它取决于您 - 发送邮件,写日志,阻止世界......