1

Mule EE を使用して、次のプロジェクトがあります。

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

<mule xmlns:jdbc-ee="http://www...
    <smtp:gmail-connector name="gmail" doc:name="Gmail"/>
    <db:mysql-config name="MySQL_Configuration" host="localhost"
        port="3306"   database="dbflow"
        doc:name="MySQL Configuration" user="user" password="Pass"/>
    <data-mapper:config name="CSV_To_XML" transformationGraphPath="csv_to_xml.grf" doc:name="CSV_To_XML"/>
    <ftp:connector name="FTP" pollingFrequency="1000" validateConnections="true" moveToDirectory= "C:\Users\User\Desktop\output" doc:name="FTP"/>
    <flow name="dbFlow1" doc:name="dbFlow1">
        <ftp:inbound-endpoint host="localhost" port="21" path="/{path}" user="username" password="pass" responseTimeout="10000" doc:name="FTP" connector-ref="FTP"/>
        <data-mapper:transform config-ref="CSV_To_XML" doc:name="CSV To XML"/>
        <byte-array-to-string-transformer doc:name="Byte Array to String"/>
        <foreach collection="#[xpath('//info')]" doc:name="For Each">
            <mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
            <db:insert config-ref="MySQL_Configuration" doc:name="Database">
                <db:parameterized-query><![CDATA[INSERT INTO `dbflow`.`user_table`
(`my_date`,
`serialnumber`,
`gender`,
`fullname`,
`email`,
`mobilenumber`,
`address`)
VALUES
(#[xpath://date],
#[xpath://serialnumber],
#[xpath://gender],
#[xpath://fullname],
#[xpath://email],
#[xpath://mobilenumber],
#[xpath://address]
);]]></db:parameterized-query>
            </db:insert>
            <message-properties-transformer scope="invocation" doc:name="Message Properties">
                <add-message-property key="count" value="#[flowVars.counter]"/>
            </message-properties-transformer>
        </foreach>
        <logger message="Number of records #[flowVars]" level="INFO" doc:name="Logger"/>
        <smtp:outbound-endpoint host="smtp.gmail.com" port="587" user="user10%40gmail.com" password="pass" connector-ref="gmail" to="user2@gmail.com"  subject=Muleapp" responseTimeout="10000" doc:name="Email"/>
    </flow>
</mule>

正しく動作します。ただし、使用する FTP コネクタを追加するとmoveToDirectory、Mule から次のようなNON-STOP のエラーが表示されます。ファイルは目的のディレクトリに移動されますが、Mule で同じエラーが無限に発生します。Mule の実行を停止しない限り、停止しません。Mule はフローを続行しません (DB への挿入とメールの送信)。

ERROR 2014-08-03 21:00:56,113 [[tests].FTP.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
java.io.IOException: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
    at com.mulesoft.mule.transport.ftp.EEFtpMessageReceiver.postProcess(EEFtpMessageReceiver.java:61)
    at org.mule.transport.ftp.FtpMessageReceiver$FtpWork.run(FtpMessageReceiver.java:312)
    at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267)
    at org.mule.work.WorkerContext.run(WorkerContext.java:286)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
ERROR 2014-08-03 21:00:57,138 [[tests].FTP.receiver.01] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
java.io.IOException: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
    at com.mulesoft.mule.transport.ftp.EEFtpMessageReceiver.postProcess(EEFtpMessageReceiver.java:61)
    at org.mule.transport.ftp.FtpMessageReceiver$FtpWork.run(FtpMessageReceiver.java:312)
    at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267)
    at org.mule.work.WorkerContext.run(WorkerContext.java:286)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
ERROR 2014-08-03 21:00:58,064 [[tests].FTP.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
java.io.IOException: Failed to rename file mytest.csv to C:\Users\user\Desktop\outputmytest.csv. Ftp error: 553
    at com.mulesoft.mule.transport.ftp.EEFtpMessageReceiver.postProcess(EEFtpMessageReceiver.java:61)
    at org.mule.transport.ftp.FtpMessageReceiver$FtpWork.run(FtpMessageReceiver.java:312)
    at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267)
    at org.mule.work.WorkerContext.run(WorkerContext.java:286)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
ERROR 2014-08-03 21:00:58,491 [[tests].dbFlow1.stage1.03] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Duplicate entry '546565' for key 'PRIMARY' (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException). Message payload is of type: String
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. Duplicate entry '546565' for key 'PRIMARY' (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException)
  sun.reflect.NativeConstructorAccessorImpl:-2 (null)
2. Duplicate entry '546565' for key 'PRIMARY' (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException). Message payload is of type: String (org.mule.api.MessagingException)
  org.mule.module.db.internal.processor.AbstractDbMessageProcessor:81 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '546565' for key 'PRIMARY'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

mytest.csv の内容は次のようになります: (DB は同じ列で、シリアル番号は主キーです)

date|serialnumber|gender|fullname|email|mobilenumber|address
03-07-2014|546565|m|your name|my@mail.com|219239|my address

と を使ってみまし#[message.inboundProperties.originalFilename]outputPattern="#[header:originalFilename]"。おそらくそれらは間違っているかもしれませんが、とにかく、Mule は変更なしで同じエラーを表示し続けます!

ポイントは、ファイルを FTP からローカル PC に移動し、DB に挿入してから電子メールで送信することです。(両方の道路を一緒に)。どんな助けでも大歓迎です!

4

2 に答える 2

2

サインインした値は表示されていませんがmoveToDirectory、例外から、ローカル ディレクトリに移動しようとしていたようです。これは間違いです。

全体のポイントはmoveToDirectory、ファイルをローカル ディレクトリではなくリモート ディレクトリに移動することです。

FTP からダウンロードしたファイルのローカル コピーが必要な場合は、a を使用しfile:outbound-endpointて必要なローカル ディレクトリに書き込みます。

于 2014-08-03T19:27:12.493 に答える
1

私は同様のことが起こり始めました。Studio と Standalone 3.50 で正常に動作するプロジェクトを取りました。同じ.zip展開ファイルを 3.51 に移動すると、(私の処理済み/アーカイブ ディレクトリ) からファイルがプルされ始めましfile:inbound-endpointmoveToDirectory

ファイルで取得したロック:

\\fsvr\vol2\DCH_ESB_Test\LMS\In2\Processed\LMS_20140821_112625_250.dat 

ファイルで取得したロック:

\\fsvr\vol2\DCH_ESB_Test\LMS\In2\Processed\LMS_20140821_112625_265.dat 

次の場所からファイルを取得する必要がありました。

\\fsvr\vol2\DCH_ESB_Test\LMS\In2

代わりに、次の場所からそれらを取得しました。

\\fsvr\vol2\DCH_ESB_Test\LMS\In2\Processed 

そのため、私のアプリは、私のアーカイブを実行することで、毎日の確認メールでスパムを送信し始めました。奇妙なことに、3.51 で誤動作した同じ zip ファイルが 3.50 でも機能しました。
もちろん、これはリリースが世に出る前に Mulesoft で発見されたはずです。私が思いつく唯一のことは、フロー プロセスの終盤でも FTP コンポーネントを使用していることです。わかりませんが、3.50 に戻すと動作するようになったことは確かです。

于 2014-08-21T20:12:56.120 に答える