【发布时间】:2016-01-19 13:40:23
【问题描述】:
我有一个要求,如果我从消息驱动的 bean 调用的服务(Restful 服务)已关闭或不返回成功,我需要将消息回滚回队列,等待一段时间(以指数方式)然后再次读取消息从队列中尝试连接到服务。
我正在尝试什么:
在OnMessage 方法中,如果我收到来自调用Restful 服务的服务的异常,我将使用messageDrivenContext.setRollBackOnly() 回滚,我可以执行Thread.sleep(RETRY_WAIT_TIME) 之类的操作;
但我如何确保RETRY_WAIT_TIME 呈指数级增长?
可能我需要维护 bean 的状态,但是谁能建议我如何做到这一点?
【问题讨论】:
-
我将首先调查您正在使用的任何消息队列的配置选项,看看它是否没有此类特定的重新传递设置。我会让你的生活变得轻松,而不是要求间隔是指数的。如果您偏离标准,您将进入自己的领域,而不是使用 MDB,而是使用手动构建的消息客户端。
-
在 Java EE 环境中使用
Thread.sleep()是一种红鲱鱼,并且被规范严格禁止。
标签: jakarta-ee jms message-driven-bean