通过Http端点调用文件入站端点 - 将XML设置为有效负载并在IBM MQ中进行更新

时间:2016-05-31 23:13:46

标签: mule ibm-mq mule-component

我正在设计一个应用程序流,我必须读取文件(XML文件)并将数据放入IBM MQ(队列)。我是否需要创建将触发文件读取和更新队列的HTTP请求,否则我该如何执行此任务。

目前我正在创建HTTP请求并将其连接到WMQ,但我将NULL数据导入队列。基本上有效载荷是NULL。

这是我浏览队列时读取的数据: sr.org.mule.transport.NullPayload1.L5U ... xp

App Flow

Message Data in the Queue

3 个答案:

答案 0 :(得分:1)

试试这样:

enter image description here

每当您在流程开头之外的任何其他位置使用文件连接器时,它就会成为出站端点。

对于使用File作为入站端点来检索任何文件,您必须在某些流程的开头使用它&最初将流量保持在停止状态为:

<flow name="filePickupFlow" initialState="stopped">
    <file:inbound-endpoint path="src/main/resources/input" responseTimeout="10000" doc:name="File"/>
    <wmq:outbound-endpoint queue="gh" doc:name="WMQ" connector-ref="WMQ"/>
</flow>

对于您的情况,只需使用所需的文件位置更改路径。

然后进一步通过http调用它,创建另一个带有http端点的流&amp;使用表达式组件将包含文件入站端点调用的流启动为:

<expression-component doc:name="Expression">
    app.registry.filePickupFlow.start();
</expression-component>

然后如果您希望在完成处理后停止,则可以再次使用表达式组件

<expression-component doc:name="Expression">
    Thread.sleep(5000);
    app.registry.filePickupFlow.stop();
</expression-component>

这里使用Thread.sleep()只是为了给出流量启动和流量之间的一些时间间隔。停止让流程操作完成。您可以添加一些其他东西来维护这个时间间隔或根据您自己的用途设置时间。

我想这就是你要找的东西。

此致

JJ

答案 1 :(得分:0)

如果要按需访问文件组件(每当您访问HTTP时,只有文件组件需要访问),请在文件组件的位置使用Mule Requester执行相同的工作。

<mulerequester:config name="Mule_Requester" doc:name="Mule Requester"/>
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" basePath="test2" doc:name="HTTP Listener Configuration"/>
<flow name="httpFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
    <mulerequester:request config-ref="Mule_Requester" resource="file://C:/in" doc:name="Mule Requester"/>
    <object-to-string-transformer doc:name="Object to String"/>
    <logger message="**payload:*#[payload]" level="INFO" doc:name="Use WMQ here instead of Logger"/>

</flow>

链接参考:https://github.com/mulesoft/mule-module-requester/blob/master/mulerequesterdemo/src/main/app/MuleRequesterDemo.xml

您还可以根据您的要求使用Poll组件来调度作业触发器,而不是HTTP。希望这会有所帮助。

答案 2 :(得分:0)

您希望将文件连接器用作入站端点,但实际上将其用作出站端点。检查配置xml文件中的文件连接器。

有许多方法可以将文件读取为入站文件连接器,轮询范围或Quartz连接器。您可以根据您的要求使用其中任何一个。最简单的流程是

<flow name="testfixedFlow">
    <file:inbound-endpoint path="tmp" connector-ref="File" responseTimeout="10000" doc:name="File"/>
    <wmq:outbound-endpoint queue="xyz" connector-ref="WMQ" doc:name="WMQ"/>
</flow>

但是如果您想在流程之间获取资源,可以使用Mule requester

希望这有帮助。