0

我刚开始使用云技术,我正在尝试实现一个简单的 hello world 示例。我正在使用新的 wso2 企业集成服务器。我正在尝试设置一个简单的 API。

我已经实现了 1 个端点:

<endpoint xmlns="http://ws.apache.org/ns/synapse">
   <address uri="http://192.168.1.100:9191/v1/hello">
      <suspendOnFailure>
         <progressionFactor>1.0</progressionFactor>
       </suspendOnFailure>
       <markForSuspension>
         <retriesBeforeSuspension>0</retriesBeforeSuspension>
          <retryDelay>0</retryDelay>
      </markForSuspension>
   </address>
</endpoint>

我已经实现了 2 个序列:

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="HelloWorldIN" xmlns="http://ws.apache.org/ns/synapse">
    <send>
        <endpoint key="gov:/HelloWorld"/>
    </send>
</sequence>

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="HelloWorldOUT" xmlns="http://ws.apache.org/ns/synapse">
    <send/>
</sequence>

最后是 API 本身

<api xmlns="http://ws.apache.org/ns/synapse" name="HelloWorld" context="/helloworld" hostname="192.168.1.100" port="9191">
   <resource methods="GET" uri-template="/v1/hello" inSequence="HelloWorldIN" outSequence="HelloWorldOUT"/>
</api>

当我向这个 API 发出 GET ( http://192.168.1.162:8280/helloworld/v1/hello ) 请求时,我得到一个 202 接受的响应,没有数据。任何帮助,将不胜感激。

编辑:这是完整的配置:

<?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>
    <taskManager provider="org.wso2.carbon.mediation.ntask.NTaskTaskManager"/>
    <sequence name="HelloWorldOUT">
        <send buildmessage="true"/>
    </sequence>
     <sequence name="fault">
         <!-- Log the message at the full log level with the ERROR_MESSAGE and the ERROR_CODE-->
        <log level="full">
             <property name="MESSAGE" value="Executing default 'fault' sequence"/>
             <property expression="get-property('ERROR_CODE')" name="ERROR_CODE"/>
             <property expression="get-property('ERROR_MESSAGE')" name="ERROR_MESSAGE"/>
          </log>
         <!-- Drops the messages by default if there is a fault -->
         <drop/>
     </sequence>
     <sequence name="main">
         <in>
             <!-- Log all messages passing through -->
             <log level="full"/>
             <!-- ensure that the default configuration only sends if it is one of samples -->
             <!-- Otherwise Synapse would be an open proxy by default (BAD!)               -->
             <filter regex="http://localhost:9000.*" source="get-property('To')">
                 <!-- Send the messages where they have been sent (i.e. implicit "To" EPR) -->
                 <send/>
             </filter>
         </in>
         <out>
             <send/>
         </out>
         <description>The main sequence for the message mediation</description>
     </sequence>
     <sequence name="HelloWorldIN">
         <send>
             <endpoint name="gov//HelloWorld">
                 <address uri="http://192.168.1.100:9191/v1/hello"/>
             </endpoint>
         </send>
     </sequence>
     <api context="/helloworld" hostname="192.168.1.100"
    name="HelloWorld" port="9191" statistics="enable" trace="enable">
         <resource inSequence="HelloWorldIN" methods="GET"
        outSequence="HelloWorldOUT" uri-template="*"/>
     </api>
     <!-- You can add any flat sequences, endpoints, etc.. to this synapse.xml file if you do
*not* want to keep the artifacts in several files -->
4

1 回答 1

0

首先要做的是改变主序列。我已将其路由到我的顺序:

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="main" xmlns="http://ws.apache.org/ns/synapse">
    <in>
        <!-- Log all messages passing through -->
        <log level="full"/>
        <!-- ensure that the default configuration only sends if it is one of samples -->
        <!-- Otherwise Synapse would be an open proxy by default (BAD!)               -->
        <filter regex="http://localhost:9000.*"
        source="get-property('To')" xmlns:ns="http://org.apache.synapse/xsd">
            <then>
                <!-- Send the messages where they have been sent (i.e. implicit "To" EPR) -->
                <send/>
            </then>
            <else>
                <log/>
                <sequence key="gov:/HelloWorldIN"/>
            </else>
        </filter>
    </in>
    <out>
        <send/>
    </out>
    <description>The main sequence for the message mediation</description>
</sequence>

确保您的 api 使用有意义的名称。这使得配置 esb 更加容易。如果您的 api 在同一个子域上侦听,则不需要 URL 重写中介。我已经改变了我的 API 的上下文来完成这个。

<api xmlns="http://ws.apache.org/ns/synapse" name="HelloWorld" context="/hello" hostname="192.168.1.100" port="9191">
   <resource methods="GET" inSequence="HelloWorldIN" outSequence="HelloWorldOUT"/>
</api>
于 2017-04-27T06:38:45.230 回答