缓存中介不返回 EI 6.1 中的缓存响应

Cache mediator not returning cached response in EI 6.1

我正在尝试向公开为 API 的服务添加缓存功能,以便重复请求获得缓存响应。但是调解器没有缓存响应,而是 return 向我发送客户端发送的消息。
以下是我的 api.It 的配置描述了一个 get 资源,它接收两个查询参数并使用它们创建一个 payload,它发送到本地 dss 服务:

    <?xml version="1.0" encoding="UTF-8"?>
<api context="/config" name="myAPI" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <cache collector="false" hashGenerator="org.wso2.carbon.mediator.cache.digest.DOMHASHGenerator" id="testCache" scope="per-mediator" timeout="200">
                <onCacheHit/>
                <implementation maxSize="100" type="memory"/>
            </cache>
            <property expression="$url:intg" name="uri.integration" scope="default" type="STRING"/>
            <property expression="$url:inst" name="uri.institution" scope="default" type="STRING"/>
            <payloadFactory media-type="xml">
                <format>
                    <con:show xmlns:con="http://com.dvg.wso2/configservice">
                        <con:SEL_INTG_NAME></con:SEL_INTG_NAME>
                        <con:SEL_INSTITUTION></con:SEL_INSTITUTION>
                    </con:show>
                </format>
                <args>
                    <arg evaluator="xml" expression="get-property('uri.integration')"/>
                    <arg evaluator="xml" expression="get-property('uri.institution')"/>
                </args>
            </payloadFactory>
            <header name="Action" scope="default" value="urn:show"/>
            <send>
                <endpoint>
                    <address format="soap11" uri="local:///services/INTG_DVG_ConfigService/"/>
                </endpoint>
            </send>
        </inSequence>
        <outSequence>
            <cache collector="true" scope="per-mediator" id="testCache"/>
            <send/>
        </outSequence>
        <faultSequence/>
    </resource>
</api>

我的预期输出应该是这样的:

<soapenv:Body>
    <properties>
        <property>
          <key>A</key>
          <value>A</value>
        </property>
    </properties>
</soapenv:Body>

但是我收到了这样的缓存响应:

<con:show xmlns:con="http://com.dvg.wso2/configservice"><con:SEL_INTG_NAME>A</con:SEL_INTG_NAME><con:SEL_INSTITUTION>A</con:SEL_INSTITUTION></con:show>

这是我在序列中创建的有效载荷的内容。应该说明的是,在缓存未命中的情况下,我收到了预期的响应。

按原样配置的缓存中介不应该存储缓存未命中的响应并return它以防缓存命中吗?
为什么它用错误的内容响应?

--- 编辑 ---
更改 org.wso2.carbon.mediator.cache.CacheMediator 日志的配置后,我能够确认缓存中介确实在保存和恢复输入消息而不是响应。
如果我尝试在 proxyService 中重现此行为,则不会发生此行为,仅在 API.

我无法让缓存调解器在 api 中工作,但我观察到它在代理服务中实现时表现符合预期。
所以我最终重构了我的集成,以便 api 调用代理服务,然后该代理将在调用 dss 服务之前验证缓存。
由于对代理的调用和dss使用本地传输,因此对性能影响不大。
如果以后有人读到这篇文章,并对如何在 api 服务上正确使用缓存中介有一些见解,请发表评论。