Я работаю над простым вариантом использования, который позволил бы клиентам динамически регистрировать события из конечной точки JMS. Моя текущая реализация выглядит так:
...
public void addListener(Event event, Listener listener){
try {
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from(event.from()).bean(listener);
}
});
} catch (Exception exception) {
exception.printStackTrace();
}
}
...
event.from () выше идентифицирует конечную точку, из которой будет использоваться сообщение («activemq: topic: market.stocks.update.ibm»), а listener будет реализацией интерфейса Listener.
Я предполагал типичный вызов как:
notifications.addListener(updateEvent, new Listener(){
void listen(){
System.out.println("Hey! Something got updated");
}
});
За исключением, конечно, ни одной из вышеперечисленных работ, так как на верблюжьем маршруте ожидается получение конкретного боба, и, следовательно, верблюжий контекст не запускается.
Каков рекомендуемый способ динамического добавления конечных точек бина?