我有一个消息驱动bean,它以下列方式提供消息: 1.它从传入消息中获取数据。 2.使用来自步骤1的数据,通过HTTP调用外部服务(字面意思是使用HttpURLConnection发送GET请求)。无论调用多长时间 - 都不得删除消息。 3.使用步骤2中的结果来持久化数据(使用实体bean)。
传入消息的速率是: I.大部分时间都很低:一天中的单位/数十。 II。有时很高:几分钟内就有几百个。
问题: 在步骤(2)中具有该服务相对较慢(每个请求20秒并且在增加工作量时降级),处理情况II的最佳方式是什么?
我做了什么: 1.让MDB等到服务执行,无论需要多长时间。这倾向于通过超时回滚MDB事务并重新传递消息,增加工作量并使事情变得更糟。 2.为HttpURLConnection设置超时在MDB onMessage()方法的完成时间方面提供了一些保证,但留下了一个未解决的问题:如何继续“超时”消息。
非常感谢任何想法。 谢谢!
答案 0 :(得分:0)
在这种情况下,您只需增加消息驱动Bean的事务超时。
答案 1 :(得分:0)
这就是我最终的结果(主要是应用服务器配置):