Flume02——发送数据到Flume02

RpcClient

package org.apache.flume.api;

import java.util.List;

import org.apache.flume.Event;
import org.apache.flume.EventDeliveryException;
import org.apache.flume.FlumeException;

public interface RpcClient {
  public int getBatchSize();
  public void append(Event event) throws EventDeliveryException;
  public void appendBatch(List<Event> events) throws
      EventDeliveryException;
  public boolean isActive();
  public void close() throws FlumeException;
}

RpcClient接口十分简单,其通过调用appendBatch 或者 append方法发送Event到Flume Agent。如果方法成功返回,意味着成功将事件写入目的地。反之将会抛出EventDeliveryException异常,Rpc客户端可以根基自己的异常处理规则进行回滚或者重试。

在执行每个RPC调用之前,通过调用isActive来确认RPC客户端是否仍然活跃。一旦不需要RPC客户端或者返回false,必须通过close方法来关闭RPC客户端,以释放资源,避免资源泄露。

RpcClient客户端公共参数    

参数默认值描述
client.type-该参数值必须为default,default_loadbalance,default_failover或thrift
batch-size100

每个批量发送事件的最大数量

如果传入的数量大于批次数量,RPC客户端将把列表分批顺次写出,只有当所有成功写出,才会返回。如果有一个批次失败就会抛出异常。如果一些批次失败而另一些批次成功,应用程序重试的时候就会导致数据重复,故最好的是传入小于等于批次数量的事件列表

hosts-可以用来指定主机参数的名字列表
hosts.<hostalis>-已hostname:port格式的主机配置


示例:

这里以Avro 客户端为例

properties 文件

client.type = default
batch-size = 100
hosts = h1
hosts.h1 = 192.168.0.7:58085

测试代码

package com.flumeTest.handler;

import java.nio.charset.Charset;
import java.util.Properties;

import org.apache.flume.api.RpcClient;
import org.apache.flume.api.RpcClientFactory;
import org.apache.flume.event.EventBuilder;

public class RpcDefaultClient {
	public static void main(String[] args) throws Exception {
		Properties properties = new Properties();
		properties.load(RpcDefaultClient.class.getClassLoader().getResourceAsStream("client.properties"));
		RpcClient c = RpcClientFactory.getInstance(properties);
		c.append(EventBuilder.withBody("test again 01", Charset.forName("UTF-8")));
		c.close();
	}
}

测试输出:

2016-03-01 13:48:40,118 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 74 65 73 74 20 61 67 61 69 6E 20 30 31          test again 01 }


转载于:https://my.oschina.net/night4soul/blog/626450

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值