gpt4 book ai didi

testing - 用于入站文件轮询的 Mule 测试代码

转载 作者:行者123 更新时间:2023-11-28 20:32:20 25 4
gpt4 key购买 nike

我是 Mule ESB 的新手。

我有以下 Mule 配置文件,它取自拼写检查器教程:

<file:connector name="FILE" streaming="false" doc:name="File" autoDelete="true" validateConnections="false"/>
<flow name="SpellCheckerFlow1" doc:name="SpellCheckerFlow1">
<file:inbound-endpoint connector-ref="FILE" path=".\xmlIn" pollingFrequency="3000" responseTimeout="10000" doc:name="Incoming File" moveToDirectory=".\xmlProcessed"/>
<http:outbound-endpoint exchange-pattern="request-response" host="www.google.com/tbproxy/spell?lang=en" port="80" doc:name="Invoke API"/>
<echo-component doc:name="Echo"/>
<file:outbound-endpoint path=".\xmlOut" outputPattern="#[function:datestamp:dd-MM-yy]_#[function:systime].xml" responseTimeout="10000" doc:name="File"/>
</flow>

我正在尝试扩展 FunctionalTestCase 类并测试此流程。下面是我用来执行此操作的提取代码:

MuleClient client = new MuleClient(muleContext);        
client.dispatch("file://./xmlIn", "<valid_xml />", null);
MuleMessage message = client.request("file://./xmlOut", 1000000000);

当我执行这段代码时,它会在/xmlIn 文件夹中创建一个数据文件。流程的其余部分不会执行。流程应轮询此文件夹以选取文件。

提前致谢!

最佳答案

file 端点请求时超时参数无效:Mule 不会等待文件出现。

这意味着您的测试不会阻塞并且总是失败。解决该问题的最简单/不太精确的方法是循环 { Thread.wait();客户端请求(); } 直到你得到一个非空的消息,即直到 xmlOut 中的文件被读取。

无需添加重试计数器:Mule 的 FunctionalTestCase 将在 getTestTimeoutSecs() 过去后(默认为 60 秒)自动失败。

旁注:

  • 为了使您的配置在我的环境中工作,我必须在 XML 配置的文件路径中将 .\ 替换为 ./

  • 出站 HTTP 端点配置错误:路径 混合在 host 中,请改用:

    <http:outbound-endpoint exchange-pattern="request-response"
    host="www.google.com" path="tbproxy/spell?lang=en" port="80"
    doc:name="Invoke API" />
  • 通过这种方式获取 Mule 客户端的效率稍微高一些:

    MuleClient muleClient = muleContext.getClient();

关于testing - 用于入站文件轮询的 Mule 测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com