使用Mule'迭代数组;s foreach示波器

使用Mule'迭代数组;s foreach示波器,foreach,mule,Foreach,Mule,我希望遍历一个数组,并使用从数组中获取的值将其放入http入站端点中。我如何能够遍历这个数组,并从数组中获取值,将其作为一个变量放置在http入站端点中 我曾经尝试过的代码是: <flow name="foreachFlow1" doc:name="foreachFlow1"> <poll frequency="2000"> <foreach collection="#[groovy:['localhost:8082', 'localhost:808

我希望遍历一个数组,并使用从数组中获取的值将其放入http入站端点中。我如何能够遍历这个数组,并从数组中获取值,将其作为一个变量放置在http入站端点中

我曾经尝试过的代码是:

<flow name="foreachFlow1" doc:name="foreachFlow1">
    <poll frequency="2000">
    <foreach collection="#[groovy:['localhost:8082', 'localhost:8083']]"
        doc:name="For Each">
        <http:outbound-endpoint exchange-pattern="request-response"
            address="http://#[payload]" method="GET" doc:name="HTTP" />
    </foreach>
    </poll>
</flow>

入站端点是消息源,不能按照您描述的方式进行参数化

为了实现您的目标,请尝试使用
消息源包装
foreach
,该消息源使用
http:outbound endpoint
执行
GET
(@method)
request-response
(@exchange-apttern)交互

诀窍是通过
foreach
返回HTTP调用的结果,默认情况下不会这样做。以下说明了一种可能的方法:

<flow name="foreachFlow1">
    <poll frequency="2000">
        <processor-chain>
            <set-variable variableName="httpResponses" value="#[[]]" />
            <foreach collection="#[groovy:['localhost:8082', 'localhost:8083']]">
                <http:outbound-endpoint
                    exchange-pattern="request-response" address="http://#[payload]"
                    method="GET" />
                <expression-component>httpResponses.add(message.payloadAs(java.lang.String))
                </expression-component>
            </foreach>
        </processor-chain>
    </poll>
    <logger level="INFO" message="#[httpResponses]" />
</flow>

<!-- Test server stubs -->

<flow name="server8082">
    <http:inbound-endpoint exchange-pattern="request-response"
        address="http://localhost:8082" />
    <set-payload value="This is 8082" />
</flow>

<flow name="server8083">
    <http:inbound-endpoint exchange-pattern="request-response"
        address="http://localhost:8083" />
    <set-payload value="This is 8083" />
</flow>

添加(message.payloadAs(java.lang.String))

入站端点是消息源,不能按照您描述的方式进行参数化

为了实现您的目标,请尝试使用
消息源包装
foreach
,该消息源使用
http:outbound endpoint
执行
GET
(@method)
request-response
(@exchange-apttern)交互

诀窍是通过
foreach
返回HTTP调用的结果,默认情况下不会这样做。以下说明了一种可能的方法:

<flow name="foreachFlow1">
    <poll frequency="2000">
        <processor-chain>
            <set-variable variableName="httpResponses" value="#[[]]" />
            <foreach collection="#[groovy:['localhost:8082', 'localhost:8083']]">
                <http:outbound-endpoint
                    exchange-pattern="request-response" address="http://#[payload]"
                    method="GET" />
                <expression-component>httpResponses.add(message.payloadAs(java.lang.String))
                </expression-component>
            </foreach>
        </processor-chain>
    </poll>
    <logger level="INFO" message="#[httpResponses]" />
</flow>

<!-- Test server stubs -->

<flow name="server8082">
    <http:inbound-endpoint exchange-pattern="request-response"
        address="http://localhost:8082" />
    <set-payload value="This is 8082" />
</flow>

<flow name="server8083">
    <http:inbound-endpoint exchange-pattern="request-response"
        address="http://localhost:8083" />
    <set-payload value="This is 8083" />
</flow>

添加(message.payloadAs(java.lang.String))

您想要实现的目标是:侦听一组不同的端口/路径?我将根据您的澄清审查我的答案。我正在尝试使用包含变量的地址字段轮询多个地址,以便轮询不同的地址。因此,我考虑使用数组遍历要轮询的地址列表。这可能吗?嗨,Emm,基本上,迭代中的每个项目都会绑定到有效负载,因此您可以使用#[payload]来访问它。在你的上一个问题中有一个例子:你想实现什么:听一堆不同的端口/路径?我将根据您的澄清审查我的答案。我正在尝试使用包含变量的地址字段轮询多个地址,以便轮询不同的地址。因此,我考虑使用数组遍历要轮询的地址列表。这可能吗?嗨,Emm,基本上,迭代中的每个项目都会绑定到有效负载,因此您可以使用#[payload]来访问它。在您的上一个问题中有一个示例:@davis我尝试使用上一个问题中的示例,并使用消息源包装foreach,但我得到错误“发现以元素'poll'开头的无效内容”。我编辑了我的原始问题并将代码放在那里删除
:每个流只能有一个消息源,并且
poll
是一个消息源。我忘了显示已注释的内容,但即使删除它,我仍然会得到错误。您是,并且您的配置在Mule 3.4.0 CE上完全有效。我想是Studio而不是Mule报告了以元素“poll”开头的
无效内容。
?如果是这样的话,就忽略它吧,Studio并没有完全接触Mule XSD。您遇到的实际问题是,
foreach
不会将它包含的消息处理器的结果传播回调用方。我正试图找到一个解决方法。如果我使用上一个问题中的示例中的确切代码,但只是注释掉
并添加
轮询
,我会得到错误
元素“flow”的内容不完整。
。我不明白为什么它不完整。@davis我尝试使用上一个问题中的示例,并使用消息源包装foreach,但我得到错误“找到了以元素'poll'开头的无效内容”。我编辑了我的原始问题并将代码放在那里删除
:每个流只能有一个消息源,并且
poll
是一个消息源。我忘了显示已注释的内容,但即使删除它,我仍然会得到错误。您是,并且您的配置在Mule 3.4.0 CE上完全有效。我想是Studio而不是Mule报告了以元素“poll”开头的
无效内容。
?如果是这样的话,就忽略它吧,Studio并没有完全接触Mule XSD。您遇到的实际问题是,
foreach
不会将它包含的消息处理器的结果传播回调用方。我正试图找到一个解决方法。如果我使用上一个问题中的示例中的确切代码,但只是注释掉
并添加
轮询
,我会得到错误
元素“flow”的内容不完整。
。我不明白为什么它不完整。。