WSO2保证在内存存储中传递消息

WSO2保证在内存存储中传递消息,wso2,wso2esb,Wso2,Wso2esb,试图为保证内存中的交付提供可行的解决方案 创建InMemoryStoreInMemmMessageStore,创建并指向插入文件 创建API,使代码如下所示: 顺序: <?xml version="1.0" encoding="UTF-8"?> <sequence name="InMMSsequence" xmlns="http://ws.apache.org/ns/synapse"> <log level="custom"> <

试图为保证内存中的交付提供可行的解决方案

创建InMemoryStoreInMemmMessageStore,创建并指向插入文件 创建API,使代码如下所示:

顺序:

<?xml version="1.0" encoding="UTF-8"?> <sequence name="InMMSsequence" xmlns="http://ws.apache.org/ns/synapse">
    <log level="custom">
        <property name="STATE" value="message is sent to InMemMessageStore"/>
    </log>
    <property name="FORCE_SC_ACCEPTED" scope="axis2" type="STRING" value="True"/>
    <axis2ns12:store messageStore="InMemMessageStore" xmlns:axis2ns12="http://ws.apache.org/ns/synapse"/> </sequence>

发送消息]

为什么要在端点url上添加'sendMessage'(这是API中定义的uritemplate?!)


所以:这里最大的问题是如何以JSON格式保存消息,以及如何保持端点url的完整性…

我发现了这个问题,我想与其他人分享它

1。API的调用结束点在结束时添加后缀,给出错误

默认情况下,URI模板“sendMessage”将在发送消息时附加到目标URL。您需要在序列中使用以下属性从目标URL中删除URI模板

<property action="remove" name="REST_URL_POSTFIX" scope="axis2"/>. 
但问题是我需要指定responce格式。有一次当我把一个端点像

http://xxx.xxx.xxx.xx/TMSALSvc/json/reply/UpdateStatus
一切都分叉了


我希望,对于其他面临相同问题的人来说,这种情况有时也会发生类似的情况

关于#1:尝试在输入序列中打印内容类型标题,只是在存储之前检查其类型。我猜您看到的只是内部消息的XML表示,而不是发送到后端的实际消息。关于#2:如果端点返回某种响应,则需要指定使用此内容的序列。这个序列可以简单地删除消息。#1:我添加了response,它是ctype#u id=application/json,STATE=message被发送到InMessageStore——我希望这是你的理论,但在内存中我仍然将其视为XML。。。。对于2,我不明白。还有一个大问题是,当处理器从存储中获取消息并将其发送到端点时,它会在末尾添加uriTemplate表单API?!?这导致该url不正确…您能解释一下或修复它吗?关于#2:消息处理器从存储中取出一条消息,并将其发送到定义的端点。如果有任何类型的响应,Synapse必须将其发送到某个地方,因此需要一个响应,或者一个故障序列。至于“大”问题:我建议您从一个调度处理器改为一个目标序列负责实际调用的采样处理器。添加到URI中的“sendMessage”看起来确实很奇怪。你能确认它实际上是使用后端的日志或类似的东西通过网络发送的吗?我发现“”删除了添加到URI中的“sendMessage”…但现在我的大问题是,处理器将消息发送到调用端点的序列中时根本没有问题,但当处理器将消息直接发送到端点时,它就失败了
   <endpoint xmlns="http://ws.apache.org/ns/synapse"
    name="InsertInvoice">    
<http  uri-template="http://xxxx.xxx.xxx.xxx/InsertInvoiceVehicleList"
    method="post">
           <suspendOnFailure>
              <progressionFactor>1.0</progressionFactor>
           </suspendOnFailure>
           <markForSuspension>
              <retriesBeforeSuspension>0</retriesBeforeSuspension>
              <retryDelay>0</retryDelay>
           </markForSuspension>    </http> </endpoint>
<property action="remove" name="REST_URL_POSTFIX" scope="axis2"/>. 
    <parameter name="Transfer-Encoding">chunked</parameter>
http://xxxx.xxx.xxx.xxx/TMSALSvc/UpdateStatus
http://xxx.xxx.xxx.xx/TMSALSvc/json/reply/UpdateStatus