powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / apache camel: актуальное содержимое папки
1 сообщений из 1, страница 1 из 1
apache camel: актуальное содержимое папки
    #38882890
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доброго времени суток,

поставили задачу настроить camel таким образом, чтобы он создавал (обновлял) файл, который содержит в себе все имена файлов в определенной папке.

первый вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
		
	public void configure() {
	
                 from("file:/home/admin/kgw/input?noop=true").process(new Processor() {
			
			 @Override
			public void process(Exchange exchange) throws Exception {
				 Object fileName = exchange.getIn().getHeader("CamelFileName");
				 exchange.getIn().setBody(fileName+"\n");
				System.out.println(fileName);
			}
		}).to("file:/home/admin/kgw/?fileName=fileContainer.txt&fileExist=Append");


}

Недостаток в том, что
1. fileContainer.txt обновляется только при появлении новых файлов
2. при удалении файла из папки, содержимое fileContainer.txt не обновляется


Меня это решение не устраивает и я сделал второй вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Component
public class MyRoute extends RouteBuilder {
	@Autowired
	private MyNotifer eventHandler;

	public void configure() {
		 getContext().getManagementStrategy().addEventNotifier(eventHandler);
                 from("file:/home/admin/kgw/input?noop=true&idempotent=false&delay=2000").stop(); 
	}
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@Component
public class MyNotifer extends EventNotifierSupport{

	@Autowired
	private ImgFileWatcher fileWatcher;
	
    public void notify(EventObject event) throws Exception {
    	 if(event instanceof ExchangeCreatedEvent){
    		 ExchangeCreatedEvent createdEvent = (ExchangeCreatedEvent) event;
    		 Message mes = createdEvent.getExchange().getIn();
    		 if(true){
    			 fileWatcher.contentChanged();
    		 }
    	 }
 
    }
 
    public boolean isEnabled(EventObject event) {
        return true;
    }
}



Код: java
1.
2.
3.
public interface ImgFileWatcher {
	public void contentChanged();
}



Втрой вариант работает. Но мне кажется, что должно быть более оптимальное решение в первом варианте.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / apache camel: актуальное содержимое папки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]