为了对Camel执行性能度量和审计日志记录,AuditEventNotifer实现如下。但是,每个事件都会被记录两次。例如,31140的消息完成事件记录了两次。有人能给我一个如何解决这个问题的提示吗?
路由定义
from(INBOUND_ENDPOINT).filter(header("foo").isEqualTo("bar")).to(
"mock:result");AuditEventNotifer实现
@Component
public class AuditEventNotifer extends EventNotifierSupport {
private static final Logger LOGGER = LoggerFactory
.getLogger(AuditEventNotifer.class);
@Override
public void notify(EventObject event) throws Exception {
LOGGER.info(event.toString());
}下面是制作的原木
15:29:12.497 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31140]]
15:29:12.497 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31140]]
15:29:12.497 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31141]]
15:29:12.497 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31141]]
15:29:12.498 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31142]]
15:29:12.498 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31142]]
15:29:12.498 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31143]]
15:29:12.498 [thread #0 - JmsConsumer[ticket_queue]] INFO AuditEventNotifer:19 - exchange completed: Exchange[JmsMessage[JmsMessageID: ID:fe80:0:0:0:be30:5bff:feee:6a24%em1a48e14979b5068a0:31143]]发布于 2017-10-06 10:10:27
因为您还没有覆盖
public boolean isEnabled(EventObject event)它打印事件的每个状态的消息。
如果你想在邮件发送时只打印一次,请检查下面的代码块。
@Component
public class AuditEventNotifer extends EventNotifierSupport {
private static final Logger LOGGER = LoggerFactory
.getLogger(AuditEventNotifer.class);
@Override
public boolean isEnabled(EventObject event) {
return event instanceof ExchangeSentEvent;
}
@Override
public void notify(EventObject event) throws Exception {
LOGGER.info(event.toString());
}
}https://stackoverflow.com/questions/26729988
复制相似问题