【问题标题】:WSO2 ESB Store and Forward Processor not obeying endpoint message formatWSO2 ESB 存储和转发处理器不遵守端点消息格式
【发布时间】:2012-10-02 16:24:21
【问题描述】:

我们一直在测试 wso2 esb 上的消息处理器和队列。我们一直在非常成功地使用采样处理器将数据记录到数据库中。这个 POX 端到端。采样处理器正确地将消息出列并将其发送到端点。端点被定义为 POX 和非分块,这一切都很好。

我们决定尝试存储转发处理器,因为我们想测试有保证的交付机制。所以我们创建了一个新的处理器并将其定义为存储和转发。在存储消息的主序列中,我们在存储消息之前添加了 target.endpoint 属性。该属性设置为采样场景中使用的同一端点。

但是 - 发现在这种模式下,消息转换不会正确发生。内容类型设置为 text/html 并且输出是分块的。这会导致我们的服务返回 415 错误。

我们尝试将 messageType、contentType 等添加到多个位置,添加到轴 http 发送方传输等,但似乎完全没有区别。

任何关于这方面的指导将不胜感激

【问题讨论】:

    标签: wso2esb


    【解决方案1】:

    在发送到端点之前在序列中定义以下属性

    <property name="DISABLE_CHUNKING" value="true" scope="axis2"/>
    

    【讨论】:

    • 这就是问题所在——我们不能这样做。我们已经将此添加到端点。存储和转发的工作方式,它不调用我们的任何序列,所以我们不能添加它。处理器直接调用端点。但是,与 esb 中遵循端点设置的其他区域不同,该处理器似乎完全忽略了端点的属性。我们设置了 pox 和 no chunking,但这两个都被忽略了。
    • 您能提供完整的突触配置吗?
    【解决方案2】:

    下面的 JS 代码只是将 messageID 插入到调用者的返回负载中。将其与仅发送到同一端点的采样处理器和序列一起使用可以正常工作。

        <?xml version="1.0" encoding="UTF-8"?>
        <definitions xmlns="http://ws.apache.org/ns/synapse">
            <registry provider="org.wso2.carbon.mediation.registry.WSO2Registry">
                <parameter name="cachableDuration">15000</parameter>
            </registry>
    
            <endpoint name="test_e">
                <address uri="http://192.168.45.168:8080/cgi-bin/esbcgi.pl" format="pox"/>
                <property name="DISABLE_CHUNKING" value="true" scope="axis2"/>
            </endpoint>
    
            <sequence name="fault" trace="enable">
                <log level="full">
                    <property name="MESSAGE" value="Executing default 'fault' sequence"/>
                    <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
                    <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
                </log>
                <drop/>
            </sequence>
    
            <sequence name="main" onError="fault" trace="enable">
                <in>
                    <log level="full"/>
                    <property name="OUT_ONLY" value="true"/>
                    <property name="FORCE_HTTP_1.0" value="true" scope="axis2"/>
                    <script language="js">
                    var message = mc.getMessageID(); 
                    var messageId = message.substring(9,45); 
                    var payload = mc.getPayloadXML().*; 
                    mc.setPayloadXML(                                                                                                                                                               
                    &lt;payload&gt;                                                                                                                                                          &lt;messageId&gt;{messageId}&lt;/messageId&gt;{payload}                                                                                                                  
                    &lt;/payload&gt;);
                    </script>
    
                    <switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:ns3="http://org.apache.synapse/xsd" source="get-property('To')">
    
                        <case regex=".*/TEST/.*">
                            <property name="target.endpoint" value="test_e" scope="default"/>
                            <store messageStore="TEST"/>
                        </case>
                        <default/>
                    </switch>
    
                    <property name="OUT_ONLY" value="false"/>
                    <script language="js">var serviceMessageId = mc.getMessageID();
                    mc.setPayloadXML(                                                                                                                                                        
                       &lt;tag xmlns="http://tagcmd.com"&gt;        
                       &lt;messageId&gt;{serviceMessageId}&lt;/messageId&gt;                                                                                                                 &lt;/tag&gt;);
                    </script>
    
                    <send>
                        <endpoint key="MessageService"/>
                    </send>
                </in>
    
                <out>
                    <script language="js">
                    var messagePayload= mc.getPayloadXML().*.*;         
                    mc.setPayloadXML(                                                                                                                                                        
                    &lt;eventResponse&gt;                                                                                                                                                    &lt;messageId&gt;{messagePayload}&lt;/messageId&gt;                                                                                                                      &lt;/eventResponse&gt;);
                    </script>
                    <send/>
                </out>
    
                <description>The main sequence for the message mediation</description>
            </sequence>
    
    
            <messageStore class="org.wso2.carbon.message.store.persistence.jms.JMSMessageStore" name="TEST">
                <parameter name="java.naming.factory.initial">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
                <parameter name="java.naming.provider.url">repository/conf/jndi.properties</parameter>
                <parameter name="store.jms.destination">APP8</parameter>
            </messageStore>
    
    
            <messageProcessor class="org.apache.synapse.message.processors.forward.ScheduledMessageForwardingProcessor" name="test_p2" messageStore="TEST">
                <parameter name="max.deliver.attempts">1</parameter>
            </messageProcessor>
    
        </definitions>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      相关资源
      最近更新 更多