WSO2 ESB存储和转发 - 发送消息时出现意外错误

时间:2016-12-06 08:54:18

标签: wso2 wso2esb synapse

让WSO2 5.0.0尝试使用JDBC消息存储库实现存储和转发模式。

向目标端点发送消息会引发异常:

TID: [-1234] [] [2016-12-05 23:25:24,874] ERROR {org.apache.synapse.message.processor.impl.sampler.SamplingService} -  Error occurred while executing the message {org.apache.synapse.message.processor.impl.sampler.SamplingService}
org.apache.synapse.SynapseException: Unexpected error during sending message out
    at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:257)
    at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:84)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:548)
    at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:382)
    at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65)
    at org.apache.synapse.endpoints.IndirectEndpoint.send(IndirectEndpoint.java:55)
    at org.apache.synapse.mediators.builtin.CallMediator.handleNonBlockingCall(CallMediator.java:221)
    at org.apache.synapse.mediators.builtin.CallMediator.mediate(CallMediator.java:99)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
    at org.apache.synapse.message.processor.impl.sampler.SamplingService$1.run(SamplingService.java:211)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:538)
    at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:78)
    ... 15 more

我相信我错过了一个重要的交通工具,Axis2或Synapse财产,但我无法找到哪一个。

存储和转发的序列为here

我试图找出in the source codes可能导致NullPointerException的原因,但对我而言,定义httpMethod和messageType是没有意义的。

谢谢大家的提示

编辑:  根据评论,正在使用的Synapse源是here

1 个答案:

答案 0 :(得分:0)

您的留言处理器在哪里?理想情况下,您的消息处理器应使用调用介体调用后端服务。您能否尝试以下步骤。

  1. 创建一个代理服务以接受消息并使用其中的存储介体将它们存储在JDBC存储中。
  2. 然后创建一个Scheduled Message Forwarding Processor,它侦听上述JDBC存储并将消息转发给端点。如果需要,您可以指定任何回复序列。否则,请确保在上面的代理服务中设置以下属性。 <property name="OUT_ONLY" value="true" />
  3. 如果仍然无法弄清错误,请启用log4j.logger.httpclient.wire.header=DEBUG获取有线日志 在log4j.properties文件中log4j.logger.httpclient.wire.content=DEBUG并在此处发布,以便我可以分析并帮助您。
  4. 如果您需要保证交付,则必须使用Message Forwarding处理器。采样处理器用于实现与限制相关的用例,这可能导致消息丢失。
  5. 有关详细信息,请参阅文章[1]。不要使用相同的突触配置,因为它有点过时,而是使用ESB Web界面或开发人员工作室创建工件。否则,由于缺少配置,您可能会遇到不同的错误。
  6. [1] http://wso2.com/library/articles/2014/01/guaranteed-delivery-with-Message-Store-Message-Processor%20/