代码之家  ›  专栏  ›  技术社区  ›  Naveen Rayappa

WSO2ESB-如何从服务提供商向中间序列发送响应?

  •  0
  • Naveen Rayappa  · 技术社区  · 10 年前

    我正在看一段关于 "Webinar - ESB - An answer to Enterprise Service Integration" 通过WSO2 ESB。我对视频有疑问。

    视频中说,总是按顺序接收请求,按顺序将从服务提供商返回响应。ESb可以有多个中间序列,我们可以设置服务提供商必须向哪个中间序列发送响应。

    当我们无法控制服务提供商时,怎么可能?我们是否在ESB和服务提供者之间使用一些队列来完成?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Jean-Michel    10 年前

    在序列中,当您向服务发送请求时,可以选择响应处理序列(服务链接):

    <send receive="personInfoSeq">
        <endpoint key="PersonInfoEpr"/>
    </send>
    

    当ESB发送请求时,将安装回调(一个专用线程),该回调将等待应答,然后执行“send”中介器中配置的“receive”序列

    在序列中,当处理响应消息时,可以将其更改为请求消息( <property name="RESPONSE" value="false"/> )并将其发送到其他服务

    在“in”序列中(处理请求消息时),可以生成响应,示例:

    <inSequence>
        <header name="To" action="remove"/>
        <property name="RESPONSE" value="true"/>
        <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
        <payloadFactory>
            <format>
                <ns:getQuoteResponse xmlns:ns="http://services.samples">
                    <ns:return xmlns:ax21="http://services.samples/xsd">
                        <ax21:change>4.212070096051944</ax21:change>
                        <ax21:earnings>-9.567415587431361</ax21:earnings>
                        <ax21:high>-148.1740146577308</ax21:high>
                        <ax21:symbol>IBM</ax21:symbol>
                    </ns:return>
                </ns:getQuoteResponse>
            </format>
        </payloadFactory>
        <send/>
    </inSequence>