【发布时间】:2013-02-12 18:56:17
【问题描述】:
让我试着解释一下情况:
我们将要合并一个消息传递系统,它可以是队列或主题(JMS 术语)。
1)生产者/发布者:有一个服务A。A产生消息并写入队列/主题
2)消费者/订阅者:有一个服务B。B从Queue/Topic异步读取消息。 B 然后调用 Web 服务并将消息传递给它。 Web 服务需要花费大量时间来处理消息。 (这个动作不需要实时处理。)
消息代理是 Tibco
我的意图是:不要错过处理来自 A 的任何消息。在稍后的时间点重新处理它,以防第一次处理失败(可能是批处理)。
问题:
我正在考虑在进行网络服务调用之前将消息写入数据库。如果调用成功,我会将消息标记为已处理。否则失败。后来,在一个 cron 作业中,我会处理所有最初失败的请求。
写入数据库是执行此操作的典型方式吗?
【问题讨论】:
-
通话失败是否有回拨?
-
是的,如果调用返回“失败”响应,我会收到响应。如果调用本身失败(网络、I/O 问题等),我也能够捕获异常
标签: java asynchronous jms publish-subscribe tibco