【问题标题】:WSO2 ESB: suspended anonymousendpointWSO2 ESB:暂停的匿名端点
【发布时间】:2014-10-29 15:52:33
【问题描述】:

我正在开发 WSO2 ESB 4.8.1,并面临有关暂停匿名端点的问题。场景是:TCP/IP 传输接收器(自定义一个)-> 代理-> 调用 HTTP 端点。 在启动运行时,我的自定义传输接收器将使用 TCP/IP 协议连接到另一台机器并启动侦听器消息事件。当消息事件到来时,传输接收器会将消息事件格式化为 JSON 格式并将其发送到预定义的 Proxy(即使已发生挂起的匿名端点,此步骤也能正常工作)。代理内部的实现非常简单,只需发送到 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 毫秒后端点可以恢复服务

如果传输接收器的请求流量仍在运行,我看到上面的日志消息显示了几次,然后 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

这对我来说真的很奇怪,我想知道我是否在这里做错了什么。我真的很需要你们的建议

最好的问候,

【问题讨论】:

    标签: wso2 wso2esb esb wso2carbon


    【解决方案1】:

    使用命名端点并配置暂停和超时,看看那里:https://docs.wso2.com/display/ESB481/Endpoint+Error+Handling

    如果您不想丢失任何消息,并且您的 http 端点可能会长时间关闭,例如,您应该考虑使用消息存储和消息处理器的保证交付,看看那里:https://docs.wso2.com/display/IntegrationPatterns/Guaranteed+Delivery

    【讨论】:

    • 嗨,米歇尔,感谢您的回复。实际上我正在使用连接器结构来构建模板并在内部使用端点。无论如何,我必须构建自定义调解器来调用我的 HTTP 端点,不再有暂停案例
    猜你喜欢
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多