首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel EventNotifierSupport产生重复输出

Camel EventNotifierSupport产生重复输出
EN

Stack Overflow用户
提问于 2014-11-04 07:45:13
回答 1查看 822关注 0票数 2

为了对Camel执行性能度量和审计日志记录,AuditEventNotifer实现如下。但是,每个事件都会被记录两次。例如,31140的消息完成事件记录了两次。有人能给我一个如何解决这个问题的提示吗?

路由定义

代码语言:javascript
复制
from(INBOUND_ENDPOINT).filter(header("foo").isEqualTo("bar")).to(
                "mock:result");

AuditEventNotifer实现

代码语言:javascript
复制
@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());
    }

下面是制作的原木

代码语言:javascript
复制
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]]
EN

回答 1

Stack Overflow用户

发布于 2017-10-06 10:10:27

因为您还没有覆盖

代码语言:javascript
复制
public boolean isEnabled(EventObject event)

它打印事件的每个状态的消息。

如果你想在邮件发送时只打印一次,请检查下面的代码块。

代码语言:javascript
复制
@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());
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26729988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档