0

JMS キューを使用してファイルを保存し、後で処理したいと考えています。キューから読み取ることができます。バイト配列を取得し、それをフォルダーに書き込むことができます。しかし、受信プロパティが失われるため、キューにプッシュするとファイル名が失われます。

<file:endpoint path="C:\Store" name="storage" responseTimeout="10000" doc:name="File"/>
<file:file-to-byte-array-transformer doc:name="File to Byte Array"/>
<jms:outbound-endpoint doc:name="Storage Queue" connector-ref="Active_MQ" queue="file.queue"/>

元のファイル名を再度関連付けるにはどうすればよいですか。Mule にプッシュする前にファイル名を保持するトランスフォーマーはありますか?

4

2 に答える 2

0

キューから読み取り、元のファイル名でファイルに書き込むには、次のようなものが必要です...ファイルがフローから読み取られて JMS キューに送信され、次のフローがファイルを JMS キューから取り出す簡単な例を次に示します。元のファイル名のフォルダーに書き込みます:-

  <?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file"
    xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking"
    xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">

    <jms:activemq-connector name="Active_MQ"
        brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ" />
    <flow name="JMSSender" doc:name="JMSSender">
        <file:inbound-endpoint responseTimeout="10000"
            doc:name="File" path="E:\backup\test">
            <file:filename-regex-filter pattern="sun.pdf,aa.txt" caseSensitive="false" />
        </file:inbound-endpoint>

        <file:file-to-byte-array-transformer /> <!-- This is necessary otherwise the output PDF file will be corrupted .. -->

        <set-session-variable variableName="FileName" value="#[message.inboundProperties.originalFilename]" doc:name="Session Variable" />

        <jms:outbound-endpoint queue="MyQueue"  connector-ref="Active_MQ" doc:name="JMS" exchange-pattern="request-response">
        </jms:outbound-endpoint>

    </flow>


    <flow name="JMSReceiver" doc:name="JMSReceiver">

        <jms:inbound-endpoint connector-ref="Active_MQ"
            doc:name="JMS" exchange-pattern="request-response" address="jms://tcp:MyQueue">
        </jms:inbound-endpoint>

        <file:outbound-endpoint path="E:\backup\test\ss" outputPattern="#[sessionVars['FileName']]" responseTimeout="10000"
            doc:name="File" />
    </flow>


</mule>

ここでは、セッション変数を使用して元のファイル名を受け取ることができます...

于 2014-08-21T16:23:19.327 に答える