2013-08-30 1 views
0

J'utilise camel version 2.11.1 dans le contexte du printemps. voici mes routes et mes haricots.Pourquoi est-ce que je reçois: org.apache.camel.TypeConversionException: java.io.FileNotFoundException:

 <route> 
     <from uri="file:/directory?move=archive&amp;maxMessagesPerPoll=25&amp;delay=1000&amp;eagerMaxMessagesPerPoll=true" /> 
     <to uri="seda:updateSomething" /> 
     </route> 
     <route> 
     <from uri="seda:updateSomething?concurrentConsumers=100&amp;limitConcurrentConsumers=false" /> 
     <process ref="updateSomething" /> 
     <to uri="seda:updateSomethingElse" /> 
     </route> 
     <route> 
     <from uri="seda:updateSomethingElse?concurrentConsumers=100&amp;limitConcurrentConsumers=false" /> 
     <process ref="updateSomethingElse" /> 
    </route> 

Mes haricots:

<bean id="updateSomething" class="project.Class1" scope="prototype"> 
</bean> 
<bean id="updateSomethingElse" class="project.Class2" scope="prototype"> 
</bean> 

Lorsque cela est commencé, il fonctionne sans aucun problème. Plus les fichiers qui sont en cours de traitement que je commence à obtenir l'erreur et, éventuellement, de plus en plus de ces situations se produisait plus souvent que le temps passe:

org.apache.camel.TypeConversionException: Error during type conversion from type: java.io.File to the required type: byte[] with value /pathto/file due java.io.FileNotFoundException: 

Il semble que je suis le traitement de chaque fichier correctement, mais pourquoi suis-je recevais cette erreur ... plus important encore, que dois-je faire différemment pour ne pas recevoir cette erreur.

project.Class1 & project.Class2 ont la même implémentation. Montrant seulement la classe 1 puisqu'elles sont identiques.

public final class Class1 implements Processor { 

    public void process(Exchange exchange) throws Exception { 
      ... 

    } 
} 
+0

Il semble qu'un fichier n'existe pas et donc vous ne pouvez pas obtenir les octets. Regardez la trace de la pile et trouvez quel service fournit cette fonctionnalité. –

+0

pouvez-vous s'il vous plaît nous montrer la mise en œuvre du «project.class1» et «project.class2» – dursun

+0

Gut feeling est le composant Camel File est saisissant le même fichier avec un autre thread. Cela peut être dû au processus d'accusé de réception que le composant de fichier effectue avec le système de fichiers. Il y aurait une fraction de seconde que la reconnaissance ne se produise pas alors un deuxième thread récupère le même fichier. Je vais devoir ajouter un enregistrement pour voir si je peux capturer ceci. – Curt

Répondre

0

Essayez streamCache = "true" dans votre CamelContext.

Questions connexes