使用smb协议和pollEnrich()的PollingConsumer

时间:2019-08-07 09:37:44

标签: apache-camel smb jcifs spring-camel camel-ftp

问题:服务器未消耗文件

我正在使用

from("test")
    .routeId("test")
    .pollEnrich()
    .simple("smb://myUrl?password=test&fileName=${in.headers.test}")
    .aggregationStrategy((Exchange oldExchange, Exchange newExchange) -> {
      //do things
      return newExchange;
    })

我没有错误,我确信该URL正常,因为当我在from()中使用相同的URL时,文件将被消耗。 我不明白这里发生了什么,我正在使用骆驼2.24.0和骆驼额外:camel-jcifs:2.23.1。我尝试使用github.jborza.camel-smbj中的库使用smb2,结果仍然相同。

我尝试调试,可以在createEndpoint方法的GenericFileComponent类中看到正确创建了端点,然后尝试(在调试模式下)从端点获取交换,可以进一步成功获取它们这将是一个SmbEndpoint,当我尝试从smbEndpoint获取交换信息时,它会从服务器中完全返回所需的文件,并为该终结点创建了一个EventDrivenPollingConsumer,我开始看了一下(似乎还可以)。当它从PollEnricher中击中consumer.receive()时,不会消耗任何文件。我尝试使用超时,而不是返回null,所以以某种方式找不到该文件,或者使用方是错误的,老实说,我现在没有任何线索。

我也在这里看看:https://github.com/apache/camel/blob/b9a3117f19dd19abd2ea8b789c42c3e86fe4c488/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumePollEnrichFileTest.java 而且我玩得很晚 &consumer.initialDelay=100&consumer.delay=100&consumer.bridgeErrorHandler=true

然后我尝试使用像这样的处理器来实现:

https://github.com/apache/camel/blob/b9a3117f19dd19abd2ea8b789c42c3e86fe4c488/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumePollEnrichFileUsingProcessorTest.java

相同的结果:(

在某个时候,文件突然被消耗了,但这仅发生了一次,我无法理解这种行为。

1 个答案:

答案 0 :(得分:0)

听起来您有readlock问题,可以找到.done中与您要使用的文件同名的文件吗?

相关问题