zoukankan      html  css  js  c++  java
  • kafka生产消息生产者配置参数详解

    必选属性有3个:
    
    bootstrap.servers:该属性指定broker的地址清单,地址的格式为host:port。清单里不需要包含所有的broker地址,生产者会从给定的broker里查询其他broker的信息。不过最少提供2个broker的信息,一旦其中一个宕机,生产者仍能连接到集群上。
    key.serializer:生产者接口允许使用参数化类型,可以把Java对象作为键和值传broker,但是broker希望收到的消息的键和值都是字节数组,所以,必须提供将对象序列化成字节数组的序列化器。key.serializer必须设置为实现org.apache.kafka.common.serialization.Serializer的接口类,默认为
    
    org.apache.kafka.common.serialization.StringSerializer,也可以实现自定义的序列化器。
    value.serializer:同上。
    
    可选参数:
    
    acks:指定了必须要有多少个分区副本收到消息,生产者才会认为写入消息是成功的,这个参数对消息丢失的可能性有重大影响。
    
    acks=0:生产者在写入消息之前不会等待任何来自服务器的响应,容易丢消息,但是吞吐量高。
    
    acks=1:只要集群的首领节点收到消息,生产者会收到来自服务器的成功响应。如果消息无法到达首领节点(比如首领节点崩溃,新首领没有选举出来),生产者会收到一个错误响应,为了避免数据丢失,生产者会重发消息。不过,如果一个没有收到消息的节点成为新首领,消息还是会丢失。默认使用这个配置。
    
    acks=all:只有当所有参与复制的节点都收到消息,生产者才会收到一个来自服务器的成功响应。延迟高。
    
    buffer.memory:设置生产者内存缓冲区的大小,生产者用它缓冲要发送到服务器的消息。
    
    max.block.ms:指定了在调用send()方法或者使用partitionsFor()方法获取元数据时生产者的阻塞时间。当生产者的发送缓冲区已满,或者没有可用的元数据时,这些方法就会阻塞。在阻塞时间达到max.block.ms时,生产者会抛出超时异常。
    
    batch.size:当多个消息被发送同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。当批次内存被填满后,批次里的所有消息会被发送出去。
    
    retries:指定生产者可以重发消息的次数。
    
    receive.buffer.bytes和send.buffer.bytes:指定TCP socket接受和发送数据包的缓存区大小。如果它们被设置为-1,则使用操作系统的默认值。如果生产者或消费者处在不同的数据中心,那么可以适当增大这些值,因为跨数据中心的网络一般都有比较高的延迟和比较低的带宽。
    
    linger.ms:指定了生产者在发送批次前等待更多消息加入批次的时间。

     再来个详细的:

     private String clientId;   //客户端的一个标识
        private final Partitioner partitioner;   //分区选择器,根据传入的参数,决定该条消息被放到哪个分区
        private final int maxRequestSize;  //客户端最大的消息大小
        private final long totalMemorySize; //单个消息的缓存区大小
        private final Metadata metadata;  //kafka 元数据维护
        private final RecordAccumulator accumulator; //消息暂存区
        private final Sender sender; //发送消息的sender任务
        private final Metrics metrics; //一些统计信息
        private final Thread ioThread; //执行Sender任务发送消息的线程
        private final CompressionType compressionType; //消息的压缩策略
        private final Sensor errors; //
        private final Time time; 
        private final Serializer<K> keySerializer; //key序列化
        private final Serializer<V> valueSerializer; //value序列化
        private final ProducerConfig producerConfig; //生产者相关配置信息
        private final long maxBlockTimeMs; //在等待metadata更新的最大等待时间
        private final int requestTimeoutMs; //消息的超时时间
        private final ProducerInterceptors<K, V> interceptors; //消息拦截器
    

      详细的见:https://blog.csdn.net/charry_a/article/details/79816575

  • 相关阅读:
    图片剪纸刀:批量切割图片工具
    Photosynth软件试用(将照片拼接成实景)
    制作一份简单的网络地图(世博地图的配准和切割)
    Discuz论坛地图插件(通过自定义Discuz Code实现)
    Maven Settings.xml 配置模板
    CentOS 7 firewalld 配置详解 (转)
    Silverlight学习笔记八右键菜单控件
    Silverlight学习笔记十三关于SilverLight的打印
    Silverlight学习笔记十二动态加载图片和显示提示(ToolTip)
    Silverlight学习笔记十一动态创建TabContro的TabItem
  • 原文地址:https://www.cnblogs.com/otways/p/11558917.html
Copyright © 2011-2022 走看看