【问题标题】:Duplicate channel before being intercepted by interceptor在被拦截器拦截之前复制通道
【发布时间】:2015-07-22 06:34:12
【问题描述】:

我正在使用水槽做这样的事情

Source --> interceptor --> Channel --> multiplexing --> HDFS Sink
                                          |-----------> Null Sink

我想在源之后添加一个通道,但我不希望事件通过拦截器。我想要“原始”事件。像这样:

Source --> interceptor (i) --> Channel --> multiplexing --> HDFS Sink
    |                                     |-----------> Null Sink
    |-------> Channel (must no be intercepted by i) --> HDFS

我该怎么做?

谢谢

【问题讨论】:

    标签: flume flume-ng


    【解决方案1】:

    由于每个源都配置了拦截器,因此您必须添加第二个源(完全没有配置拦截器并侦听不同的 Http 端口),并发出两次数据:一份用于带有拦截器的源,另一份用于复制到其他来源。

    另一种可能性是链接两个代理。第一个包含一个没有拦截器的源和两个接收器:一个用于将数据保留在 HDFS 中,另一个用于提供您已经拥有的代理。我的意思是:

    src-->ch-->multip-->sink----------->src-->int-->ch-->multip-->hdfssink
                    |-->hdfssink                              |-->nullsink
    (________agent1____________)        (_____________agent2_____________)
    

    【讨论】:

    • 这正是我所做的。首先,我使用了 2 个 kafka 资源来阅读相同的主题,但我不太喜欢这个解决方案。所以我使用 2 个代理和一个 Avro Sink/Source 来链接这 2 个代理。
    • 我很惊讶在被拦截之前根本无法复制事件。我想知道为什么拦截器是按源而不是按通道配置的。 @guillaume 我可以假设您为两个 Kafka 源使用了两个不同的消费者组吗?
    猜你喜欢
    • 2020-01-21
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2013-06-25
    • 2018-08-09
    • 2014-03-10
    • 2018-11-29
    • 2023-03-13
    相关资源
    最近更新 更多