Пользовательский Event Notifier для верблюда apache не работает для событий обмена - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть приложение с пружинной загрузкой, которое реализует службу маршрутизации верблюдов.Я хочу знать, являются ли очереди потребителей живыми или нет (потому что эти очереди не в моей системе).Я реализовал Уведомление о событиях, чтобы знать, вызвано ли событие обмена отправлено или нет.Но моя пользовательская реализация уведомления о событии не работает.Я могу видеть в журналах, когда запускается событие контекста верблюда, но это все.Никакое другое событие не регистрируется уведомителем о событии.Спасибо.

Это класс уведомлений о событиях мая:

@Component
public class MyLoggingSentEventNotifer extends EventNotifierSupport {
private static final Logger logger =    LoggerFactory.getLogger(MyLoggingSentEventNotifer.class);
@Override
public void notify(final EventObject event) throws Exception {
  if (event instanceof CamelContextStartedEvent) {
  }

  if (event instanceof ExchangeSentEvent) {
     final ExchangeSentEvent sent = (ExchangeSentEvent) event;
     log.info("Took {} millis to send to: {}", sent.getTimeTaken(), sent.getEndpoint());
  }

  if (event instanceof ExchangeCreatedEvent) {
     final ExchangeSendingEvent sending = (ExchangeSendingEvent) event;
     log.info("Sending to to: {}", sending.getEndpoint());
  }
}
@Override
public boolean isEnabled(final EventObject event) {
  if (event instanceof CamelContextStartedEvent) {
     return true;
  }
  return false;
}
}

1 Ответ

0 голосов
/ 05 февраля 2019

Проблема заключается в вашем isEnabled методе, при котором вы должны фильтровать, какие события вы хотите принять.И в своем коде вы принимаете только событие, запускаемое верблюжьим контекстом, и поэтому получаете только это.Вместо этого либо просто верните true для всех событий, либо отфильтруйте те, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...