美文网首页
Apache pulsar producer接口详解

Apache pulsar producer接口详解

作者: wolf4j | 来源:发表于2019-02-22 18:07 被阅读9次
    producer.png

    send(消息发送)

    提供以下三种消息发送的形式:

    • sned
    • send async
    • send timeout

    close

    关闭一个producer,提供以下两种方式:

    • close
    • close async

    intercept

    拦截器接口主要提供以下三个方法:

    • close
      关闭interceptor,主要用于执行一些资源清理工作

    • before send
      用户可以在该方法中对消息做任何操作,但最好保证不要修改消息所属的topic和分区,否则会影响目标分区的计算

    • on send ack
      该方法会在消息被应答之前或消息发送失败时调用,并且通常都是在producer回调逻辑触发之前。onAcknowledgement运行在producer的IO线程中,因此不要在该方法中放入很重的逻辑,否则会拖慢producer的消息发送效率

    compression

    • NONE
    • LZ4
    • ZLIB
    • ZSTD

    scheme

    • java string hash
    • murmur3_32hash

    producer name

    给生产者指定一个名字,如果没有手动指定,系统将会为该producer生成一个全局唯一的名字。
    注意:在指定名称时,用户需要确保对于给定的topic,生产者名称在所有Pulsar的集群中是唯一的。 broker将强制执行只有一个给定名称的producer可以在topic上进行publish。

    crypto

    crypto key reader
    • get public key
    • get private key
    add encryption key

    添加producer用来加密数据密钥的public key.
    当producer创建时,Pulsar客户端会检查是否有密钥添加到encryptionKeys中。 如果找到要添加的key,则针对每个key调用回调函数getKey(String keyName)来获取key的值。 应用程序应实现这个回调并返回pkcs8格式的密钥。 如果启用了压缩功能,则压缩后会对消息进行加密。 如果启用了批处理消息传递,则批处理消息也将被加密。

    crypto failure action
    • FAIL

      如果加密操作失败,FAIL是失败时,发送的默认选项

    • SEND

      忽略加密失败并继续发送未加密的消息

    flush

    • flush
    • flush async

    topic

    指定该producer将要把消息publish到哪一个topic

    other option

    block if queue full

    当输出(outgoing)队列已满时,是否停止相应的操作

    max pending msg

    设置包含待处理消息的队列的最大大小,以便从broker接收确认。
    当队列已满时,默认的,所有的调用都会失败,除非blockIfQueueFull设置为true。可以使用blockIfQueueFull来改变这个行为。

    max pending msg across partitions

    设置所有分区中的最大挂起消息数,此设置将用于降低每个分区的最大挂起消息

    initial sequenceId

    为producer生产的消息设置最开始的sequenceID,如果没有额外指定,那么接下来生产的第一条消息的sequenceID就是initialSequenceId + 1,第二条消息的sequenceID依次递增。

    clone

    基于当前的producer,copy一个producer出来。比如我们需要创建多个producer,并且这些producer有一些相同的属性可以复用,那么我们就可以基于这些相同的属性进行copy,然后对copy后的producer在做定制化的配置

    get last sequenceID

    获取producer publish的最后一个sequenceID。
    如果系统中有两个名字一样的producer(原则上,这是不被允许的),该函数将返回在上一个producer发布的最后一条消息的sequenceID,如果没有消息被publish,则返回-1。

    msg routing mode

    • single partition
    • round robin partition
    • custom partition

    batch

    • max messages
    • max publish delay
    • enable batch
      是否启用batch的功能

    property

    • property
      设置单个属性
    • properties
      设置多个属性,可以包装到map中

    auto update partitions

    相关文章

      网友评论

          本文标题:Apache pulsar producer接口详解

          本文链接:https://www.haomeiwen.com/subject/twtyyqtx.html