【发布时间】:2017-01-31 15:19:29
【问题描述】:
我有一个引用 TCP 连接器的 TCP 入站端点。这是一个请求-响应端点。 TCP 客户端是第 3 方应用程序,它仅在一个套接字上发送请求。这就是我设置 TCP 端点的方式。 端点:
<tcp:inbound-endpoint exchange-pattern="request-response"
responseTimeout="10000" doc:name="TCP" address="${Endpoint}" encoding="ISO-8859-1" connector-ref="TCP"/>
连接器:
<tcp:connector name="TCP" doc:name="TCP connector"
clientSoTimeout="${Client_SO_Timeout}" receiveBacklog="0" receiveBufferSize="0"
sendBufferSize="0" serverSoTimeout="${Server_SO_Timeout}" socketSoLinger="0"
validateConnections="true" keepAlive="true" sendTcpNoDelay="true">
<receiver-threading-profile maxThreadsActive="${TCP_MaxThreadsActive}" maxThreadsIdle = "${TCP_MaxThreadsIdle}" />
<reconnect-forever />
<service-overrides messageReceiver="CustomMessageReceiver" />
<tcp:custom-protocol ref="CustomLengthProtocol" />
</tcp:connector>
流程运行良好。但是当必须处理并发请求时,最后几个请求会超时。我从中了解到的是,消息正在等待接收方处理(因为只使用一个 TCP 会话),直到前一个请求被 mule 流完成。
为了调整这一点,我正在寻找一种方法来更改 mule 流,如下所示:收到客户端的请求后,我需要将其发送到 mule-flow,它可能会异步处理并推送响应到同一个插座。一旦在端点接收到请求,它就不需要等待前一个请求的流程完成才能处理下一个请求。没有要求从 mule 流中保留请求/响应的顺序。 有没有办法通过扩展 mule TCP 端点功能来实现这一点?这类似于队列异步流处理策略,不同之处在于必须将响应发送回原始 TCP 套接字。
【问题讨论】:
标签: tcp mule mule-studio mule-component