首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flume-ng空事件的自定义接收器

Flume-ng空事件的自定义接收器
EN

Stack Overflow用户
提问于 2013-03-10 11:40:35
回答 2查看 1.4K关注 0票数 5

我正在尝试为flume-ng编写一个自定义接收器。我查看了现有的接收器和文档并对其进行了编码。然而,应该接收事件的'process()‘方法总是以null结束。我正在执行Event event = channel.take();但该事件为空。我在日志中看到,此方法被重复调用,因为事件仍在通道中。

谁能给我指个方向?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-30 16:17:10

这是一个过程函数的框架,如果您无法获得回滚事件,请将状态更改为BACKOFF。如果没有,则提交并将status设置为READY。无论如何,您总是关闭事务。

代码语言:javascript
复制
    Status status = null;
    Channel channel = getChannel();
    Transaction transaction = channel.getTransaction();
    transaction.begin();
    try {
        Event event = channel.take();

        if (event != null && validEvent(event.getBody()) >= 0) {
           # make some printing
        }
        transaction.commit();
        status = Status.READY;
    } catch (Throwable ex) {
        transaction.rollback();
        status = Status.BACKOFF;
        logger.error("Failed to deliver event. Exception follows.", ex);
        throw new EventDeliveryException("Failed to deliver event: " + ex);
    } finally {
        transaction.close();
    }
    return status;

我确信这会起作用:)。

票数 5
EN

Stack Overflow用户

发布于 2013-03-27 19:41:02

这是设计好的。接收器运行器将使用null事件轮询接收器,因此可以确保接收器处于活动状态,并准备好接受未来的事件。当您接收到null事件时,请确保返回Status.BACKOFF,并且接收器处理器将在重试之前等待一段时间。

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

https://stackoverflow.com/questions/15318645

复制
相关文章

相似问题

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