3

XML を検証しようとするルートを構築しようとしています。すべてが正しい場合は、このファイルを分割する必要があります。それ以外の場合は、例外がスローされ、何か他のことを行う必要があります。だから私は次のことをしました:

from("file:"+fileOutboxTransformed+"?preMove=inprogress&move="+backupFolderTransformed+"/"+labelMessageType+"_${date:now:yyyyMMddHHmmssSSS}-${file:name.noext}.${file:ext}")
    .log(LoggingLevel.INFO, "Got transformed file and sending it to jms queue: "+queue)
    .doTry()
        .to("validator:classpath:"+validator)
        .split(xPathMessageTypeSplit)
        .to("jms:"+queue+"?jmsMessageType=Text")
    .doCatch(ValidationException.class)
        .log(LoggingLevel.INFO, "Validation Exception for message ${body}")
        .to("xslt:classpath:"+transformationsErrorAfter)
        .split(xPathNotificationSplit)
        .to("file:"+fileOutboxInvalid+"?fileName=${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}.err2")
    .end();

しかし、それはコンパイルされず (分割を使用しない場合、コンパイルして動作します)、エラーは次のとおりです。

The method doCatch(Class<ValidationException>) is undefined for the type ExpressionNode

だから私は次のことを試しました

from("file:"+fileOutboxTransformed+"?preMove=inprogress&move="+backupFolderTransformed+"/"+labelMessageType+"_${date:now:yyyyMMddHHmmssSSS}-${file:name.noext}.${file:ext}")
    .log(LoggingLevel.INFO, "Got transformed file and sending it to jms queue: "+queue)
    .doTry()
        .to("direct:validate")
    .doCatch(ValidationException.class)
        .log(LoggingLevel.INFO, "Validation Exception for message ${body}")
        .to("xslt:classpath:"+transformationsErrorAfter)
        .split(xPathNotificationSplit)
        .to("file:"+fileOutboxInvalid+"?fileName=${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}.err2")
    .end();

    from("direct:validate")
        .to("validator:classpath:"+validator)
        .to("direct:split_message");

    from("direct:split_message")
        .split(xPathMessageTypeSplit)
        .to("jms:"+queue+"?jmsMessageType=Text");

今回はエンドポイントが重複しているというエラーが表示されます

 org.apache.camel.FailedToStartRouteException: Failed to start route route312 because of Multiple consumers for the same endpoint is not allowed: Endpoint[direct://validate]

この問題を解決する方法について何か考えはありますか?

4

2 に答える 2

1

2 回目の試行は問題ないようです。あなたが得ているエラーはfrom("direct:validate") 、同じエンドポイントから消費するアプリケーションに他のルートがありませんか? で始まる 2 つのルートが原因です。

編集:別の名前を付けてみてください。おそらく、すでに存在することを確認してください(アプリ内またはキャメル内)

于 2012-07-26T12:49:54.547 に答える