PollingConsumer с использованием протокола smb и pollEnrich()

Проблема: файл не используется с сервера

Я использую

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

У меня нет ошибки, я уверен, что URL-адрес в порядке, потому что, когда я использую тот же URL-адрес в from (), файл потребляется. Я не понимаю, что здесь происходит, я использую camel 2.24.0 и camel-extra:camel-jcifs:2.23.1. Я пытался использовать smb2 с библиотекой из github.jborza.camel-smbj, результат тот же.

Пробовал отлаживать, вижу в классе GenericFileComponent в методе createEndpoint, что конечная точка создана корректно, потом попробовал (в режиме отладки) получить обмены со своей конечной точки, могу их успешно получить, дальше так будет a SmbEndpoint, когда я пытаюсь получить обмены от моего smbEndpoint, он возвращает именно нужный файл с сервера, далее для этой конечной точки создается EventDrivenPollingConsumer, я его посмотрел, запускается (вроде нормально). Когда он попадает в Consumer.receive() из PollEnricher, который он блокирует, файл не используется. Я пытался использовать тайм-аут, после чего возвращает ноль, поэтому почему-то не могу найти файл, или потребитель ошибается, я, честно говоря, понятия не имею на данный момент.

Я тоже посмотрел здесь: 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

Тот же результат :(

В какой-то момент файл был израсходован, внезапно, но это было только один раз, я не могу понять такое поведение.


person agata    schedule 07.08.2019    source источник
comment
У меня точно такая же проблема. Нашли ответ?   -  person Patrice    schedule 15.09.2020
comment
Честно говоря, я не помню, что я делал, насколько я помню, мой адрес стал очень длинным, потому что я добавил некоторые свойства.   -  person agata    schedule 16.09.2020
comment
Спасибо за ваш быстрый отзыв. Замена pollenrich на rich в конечном итоге сработала для меня, за исключением того, что опция delete=true не работает (файл не удаляется). В итоге я разработал свой собственный SmbProcessor, который извлекает файл и удаляет его.   -  person Patrice    schedule 16.09.2020
comment
Большой! Примите во внимание, что библиотека smb больше не поддерживается, и вам следует подумать о переходе на что-то другое.   -  person agata    schedule 16.09.2020


Ответы (1)


Похоже, у вас проблема с блокировкой чтения. Можете ли вы найти какие-либо файлы в .done с тем же именем, что и у файла, который вы пытаетесь использовать?

person anpt    schedule 09.08.2019