【问题标题】:Single request to call multiple backends in Datapower在 Datapower 中调用多个后端的单个请求
【发布时间】:2020-12-17 07:30:29
【问题描述】:

我们有一个要求,一个输入应该去多个后端。为此,我正在使用带有上下文变量设置的结果操作,如下所示:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:dp="http://www.datapower.com/extensions" 
xmlns:regexp="http://exslt.org/regular-expressions"
exclude-result-prefixes="dp regexp"
extension-element-prefixes="dp" version="1.0">
<xsl:template match="/">
<xsl:variable name="MultiResults">
<results mode="require-all" multiple-outputs="true">
<url>http://127.0.0.1:9988/MainLocation</url>
<url>http://127.0.0.1:4188/MainLocation</url>
</results>
</xsl:variable>
<dp:set-variable name="'var://context/uservars/resultURLs'" value="$MultiResults"/>

我遇到的问题是我没有看到任何后端的请求。我收到错误“未指定动态后端主机”。如何将单个请求发送到所有三个后端服务?

提前致谢!

【问题讨论】:

    标签: ibm-datapower


    【解决方案1】:

    如果您有动态后端,则需要设置变量var://service/routing-url。根据您希望服务的运行方式,您可以将其中一个输出发送到routing-url,这将由原始Result 触发,然后为另一个目的地添加第二个结果。

    IMO,特别是如果您需要确定并能够处理错误,最好使用 dp:url-open() 发布您的数据并验证来自 url-open() 的响应,然后只需执行 @ 987654325@ 和 var://service/mpgw/skip-backside = 1(或在规则的任何位置设置“Set-Variable”操作)。

    【讨论】:

    • 我使用了 dp:url-open(),请求被路由到后端服务,但在路由器的探测中,它显示出站 url 与入站相同。在日志中我收到错误:“url 上的远程错误”。如果我收到此错误,那么请求是如何到达后端的?
    猜你喜欢
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2013-01-11
    相关资源
    最近更新 更多