我有一个消息驱动bean,它以下列方式提供消息: 1.它从传入消息获取数据。 2.使用来自步骤1的数据通过HTTP调用外部服务(字面上,使用HttpURLConnection发送GET请求)。无论调用需要多长时间 - 消息都不能被删除。 3.使用步骤2的结果来坚持数据(使用实体bean)。通过HTTP从消息驱动Bean(MDB)中调用减缓服务
收到消息的比率是: I.大部分时间低:一个单位/一天的数量为几十个。 二,有时很高:在几分钟内成百上千。
问题: 在步骤(2)中执行该服务相对较慢(每次请求20秒并在工作负载增加时会降级),处理情况II的最佳方式是什么?
我试过了什么: 1.让MDB等到服务执行完毕,无论需要多长时间。这往往会通过超时回滚MDB事务并重新传递消息,从而增加工作量并使事情变得更糟。 2. HttpURLConnection的设置超时为MDB onMessage()方法的完成时间提供了一些保证,但留下了一个悬而未决的问题:如何处理“超时”消息。
任何想法都非常感谢。 谢谢!