WSO2 esb作为具有故障转移传输超时的jms生产者

WSO2 esb作为具有故障转移传输超时的jms生产者,wso2,timeout,jms,esb,producer,Wso2,Timeout,Jms,Esb,Producer,使用wso2 esb 4.9.0,我希望有一个HTTP api在JMS队列(activemq)中推送消息。jms发送应该使用故障转移,但如果没有可用的activemq代理,它应该在超时后执行faultsequence(例如15秒)(在faultsequence中,应该向原始客户端发送http响应,其中包含http错误代码500和JSON正文) 我尝试为我的activemq连接工厂使用以下url: <parameter name="java.naming.provider.url" lock

使用wso2 esb 4.9.0,我希望有一个HTTP api在JMS队列(activemq)中推送消息。jms发送应该使用故障转移,但如果没有可用的activemq代理,它应该在超时后执行faultsequence(例如15秒)(在faultsequence中,应该向原始客户端发送http响应,其中包含http错误代码500和JSON正文)

我尝试为我的activemq连接工厂使用以下url:

<parameter name="java.naming.provider.url" locked="false">failover:(tcp://localhost:61616)?timeout=3000</parameter>
如何使用wso2 esb实现这一点

有关超时参数的文档,请参阅activemq故障转移传输参考:

注释

默认情况下,在故障转移传输模式下,当代理变得不可用时,发送操作将无限期地阻塞。有两个选项可用于处理此场景。首先,直接在ActiveMQConnectionFactory上设置TransportListener,使其在任何可能需要网络跃点的请求之前就位;其次,设置超时选项。超时选项会导致当前发送操作在指定超时后失败

例如:

故障转移:(tcp://primary:61616)?超时=3000

在本例中,如果未建立连接,发送操作将在3秒后超时。请务必注意,发生超时时不会终止连接。因此,一旦代理可用,以后可以使用相同的连接重新发送受影响的消息

试用
在发送中介之前。

在我的情况下,这是一个连接创建,因此设置startupMaxReconnectAttempts=X允许我在多次重新连接尝试后“超时”。在默认设置(指数退避)下,约5秒后的值X=10超时。所以我用

<address uri="jms:/MyQueue?java.naming.provider.url=failover:(tcp://localhost:616161)?startupMaxReconnectAttempts=10"/>

为什么会这样?它需要超时参数吗?哪里
curl -XPOST -H "Content-Type: application/json" -d '{}' -k "https://localhost:8243/myApi/send"
^C # I have to kill it manually; instead it should return an error
<address uri="jms:/MyQueue?java.naming.provider.url=failover:(tcp://localhost:616161)?startupMaxReconnectAttempts=10"/>