如何在WSO2 ESB 4.9.0中对JMS代理设置限制

时间:2016-07-05 20:07:21

标签: wso2 wso2esb wso2carbon

在队列中填充批量邮件时,我们在WSO2 ESB 4.9.0中遇到MQ JMS代理问题。

代理调用的后端服务每秒只能处理50个请求,而且我们的后端服务将失败。

这里的问题是,当消息在队列(1000个消息)上被填满时,代理正在读取队列中的所有消息并发送到后端服务&后端服务失败。

我们可以在代理上设置任何设置来控制代理服务读取的消息。

这里的主要问题是代理可以非常快速地从队列中读取消息并充斥后端服务。后端服务失败,因为它们不是为处理更高负载而设计的

3 个答案:

答案 0 :(得分:1)

如果您需要侦听JMS队列并希望以受控方式向后端服务发送消息,则必须使用Message storeMessage Processor

答案 1 :(得分:1)

您可以在代理服务中定义参数:

<parameter name="transport.jms.ConcurrentConsumers">1</parameter>
<parameter name="transport.jms.MaxMessagesPerTask">1</parameter>
<parameter name="transport.jms.MaxConcurrentConsumers">1</parameter>

(根据您的需要调整这些值)

此外,如果您向后端服务发送消息,您可以选择以同步方式发送消息,使用带有blocking =&#34; true&#34;的呼叫中介。 :您的代理不会将下一条jms消息出列,直到它从您的后端服务收到响应。 另一方面,如果您使用send mediator,它是异步的:您的中介将继续,而另一个线程(回调)等待响应,因此,您的代理将出列下一条jms消息

答案 2 :(得分:0)

通过设置以下属性,我们可以启用节流或控制发送到后端的消息。

Proxy level Throttling using JMS

<parameter name="jms.proxy.throttle.enabled">true</parameter> <parameter name="jms.proxy.throttle.limitPerMinute">3</parameter>