JMS队列限制使用者

时间:2017-06-23 10:12:09

标签: bpel

爱 我有两个bpel流程。进程A将消息放入队列中,进程B使用消息并执行一些操作。 我正在寻找的是一种限制同时处理的消息数量的方法。因此限制了进程B同时运行的数量。

adapter.jms.receive.threads - 此参数指示激活适配器端点时创建的轮询器线程数。默认值为1.每个轮询器线程接收自己的消息,该消息是独立处理的,因此可以提高吞吐量。

我认为这个参数可以满足我的要求,但我认为没有区别。

我正在做的测试是将一堆消息推入队列,并立即创建一个执行实例,无论我在adapter.jms.receive.threads中有什么价值。

此属性不应限制同时处理的请求数量吗?你能想到它不起作用的任何理由吗?我错过了任何配置吗?任何兼容性问题?

1 个答案:

答案 0 :(得分:0)

您没有指定您使用的确切版本,但因为您提到了“adapter.jms.receive.threads”我假设您至少使用的是Oracle BPEL 11g +。

如果未覆盖bpel.config.oneWayDeliveryPolicy属性的默认值(设置为“async.persist”),则会出现描述的行为。将组件上的bpel.config.oneWayDeliveryPolicy更改为“sync”可以解决您的问题。

准确地说,将以下属性添加到composite.xml文件中的组件定义中:

<property name="bpel.config.oneWayDeliveryPolicy" type="xs:string" many="false">sync</property>