我正在研究WSO2 ESB 4.8.1并面临有关暂停匿名端点的问题。场景是:TCP / IP传输接收器(自定义的) - >代理 - >调用HTTP端点。 在启动运行时,我的自定义传输接收器将使用TCP / IP协议连接到另一台计算机并启动侦听器消息事件。当消息事件到来时,传输接收器将消息事件格式化为JSON格式并将其发送到预定义的代理(即使已发生暂停的匿名端点,此步骤仍然正常)。代理端的工具非常简单,只需发送到HTTP端点:
<property name="messageType" value="application/json" scope="axis2" />
<property name="Accept" scope="transport" value="application/json" />
<payloadFactory media-type="json">
<format>$1</format>
<args>
<arg evaluator="json" expression="$.eventMessage" />
</args>
</payloadFactory>
<call>
<endpoint>
<http method="post" uri-template="http://localhost:9080/goal"></http>
</endpoint>
</call>
除了发生挂起的匿名端点(例如HTTP端点关闭)之外,该过程正常工作,然后我能够看到如下的日志消息:
WARN {org.apache.synapse.endpoints.EndpointContext} - Suspending endpoint : AnonymousEndpoint - current suspend duration is : 30000ms - Next retry after : Tue Oct 28 17:38:23 ICT 2014
如果我在传输接收器处停止请求流量并重新启动HTTP端点,则在30 ms后端点可以恢复服务
如果传输接收器上的请求流量仍在运行,我看到上面的日志消息显示几次,然后ESB服务器不再记录该消息。此时,HTTP端点被挂起,除了重新启动ESB服务器
之外永远不会恢复服务我也看到了这条日志消息:
WARN {org.apache.synapse.core.axis2.TimeoutHandler} - Expiring message ID : urn:uuid:5dcedb38-3f9a-4a75-a201-ae4e76428216; dropping message after global timeout of : 120 seconds
这对我来说真的很奇怪,我想知道我在这里做错了什么。我真的需要你的建议人
致以最诚挚的问候,
这是
答案 0 :(得分:1)
使用命名端点并配置暂停和超时,看一下:https://docs.wso2.com/display/ESB481/Endpoint+Error+Handling
如果您不想丢失任何消息,并且如果您的http端点可能会长时间停用,那么您应该考虑使用带有消息存储和消息处理器的保证传递,请查看:{{ 3}}