在 application.yml 配置文件中 Pulsar 各种参数用法

在 application.yml 配置文件中,可以通过以下方式添加 Pulsar 绑定参数:

spring:
  cloud:
    stream:
      pulsar:
        binder:
          serviceUrl: pulsar://localhost:6650 # Pulsar 服务地址
          topicName: test-topic # 主题名称
          # 其他自定义配置参数

其中,serviceUrl 参数指定 Pulsar 服务的地址,topicName 参数指定要绑定的主题名称。其他可选配置参数可以参考 Pulsar Binder 的文档进行配置。

numListenerThreads

在application.yml中Pulsar 配置参数numListenerThreads表示每个Pulsar消费者(consumer)实例的监听线程数。

示例:

pulsar:
  serviceUrl: pulsar://localhost:6650
  numListenerThreads: 10

在上面的示例中,numListenerThreads被设置为10,表示每个Pulsar消费者实例将启动10个监听线程。可以根据实际情况进行调整。

在application.yml中Pulsar 配置参数ioThreads和listenerThreads参数的作用是什么?

ioThreads参数指定了Pulsar服务端用于网络IO的线程数。这些线程主要负责处理网络请求和响应,并对Socket进行读写操作。通过增加ioThreads参数的值,可以提高Pulsar服务端的网络处理能力。

listenerThreads参数指定了Pulsar服务端用于监听客户端请求的线程数。这些线程主要负责接收客户端的连接请求,并将请求转发给ioThreads处理。通过增加listenerThreads参数的值,可以提高Pulsar服务端接收客户端请求的能力,从而提高系统的并发处理能力。

subscriptionInitialPosition

Pulsar支持以下三种订阅初始位置(即消费者对于消息的起始消费位置):

  1. Latest:消费者从最新的消息开始消费,忽略订阅之前发布的所有消息。
  2. Earliest:消费者从最早的消息开始消费,包括订阅之前发布的所有消息。
  3. Specific:消费者从指定的消息位置开始消费。这需要在订阅时指定起始消息位置,可以是消息ID,时间戳或者相对时间(例如“3h ago”)。

在application.yml中配置subscriptionInitialPosition的参数值为latest或earliest或specific即可指定消费者对于消息的起始消费位置。例如:

pulsar:
    url: pulsar://localhost:6650
    subscriptionInitialPosition: earliest

这里将消费者的起始消费位置设置为最早的消息。注意,订阅初始位置只会在订阅时生效,如果消费者已经开始消费消息,则无法更改订阅初始位置。

subscriptionType

Pulsar中的subscriptionType参数用于设置消费者订阅类型,取值可以是Exclusive、Shared、Failover或Key_Shared。其在application.yml中的配置格式如下:

pulsar:
  client:
    subscriptionType: Exclusive

其中,subscriptionType的值可以根据实际需求进行调整。具体含义如下:

  • Exclusive:独占模式,一个Topic只能被一个消费者独占消费。
  • Shared:共享模式,启动多个消费者进行消费,每个消费者只能消费一部分消息。
  • Failover:故障转移模式,可以启动多个消费者进行消费,但同一时刻只能有一个消费者消费消息,其他消费者处于备份状态。
  • Key_Shared:按照消息键进行共享模式,启动多个消费者进行消费,每个消费者只能消费特定的消息键。

根据具体的业务需求,选择适合的订阅类型可以最大化地提高Pulsar的消息消费效率和稳定性。

consumerNamePrefix

在Pulsar的配置文件application.yml中,可以配置参数consumerNamePrefix来设置消费者名称的前缀。该参数的作用是为消费者名称增加一个前缀,避免同一应用程序中使用的不同消费者名称相同的情况。配置示例如下:

pulsar:
  serviceUrl: pulsar://localhost:6650
  consumerNamePrefix: myapp_

上述配置会将所有的消费者名称增加前缀"myapp_",例如"myapp_consumer_1"、"myapp_consumer_2"等。这样可以确保不同的应用程序之间的消费者名称不会相互冲突。

receiverQueueSize

Pulsar 的 receiverQueueSize 参数可以在 application.yml 文件中通过以下方式进行配置:

spring:
  pulsar:
    receiverQueueSize: <size>

其中,<size> 表示接收队列的大小,单位为字节。该参数用于控制消费者接收消息的速度,可以根据实际情况进行调整。如果消费者处理消息的速度很快,可以适当增加接收队列的大小,以提高消费者的并发能力。反之,如果消费者处理消息的速度较慢,可以减小接收队列的大小,以避免消息堆积的情况。

dynamicTopic

在application.yml中配置Pulsar的dynamicTopic参数,可以按照以下方式进行:

pulsar:
  serviceUrl: pulsar://localhost:6650
  dynamicTopic:
    maxPartitions: 10
    partitionPrefix: "partition-"
    partitionSuffix: ""

其中,maxPartitions表示每个动态主题的最大分区数,partitionPrefix表示动态主题名称的前缀,partitionSuffix表示动态主题名称的后缀。

这样,当使用PulsarTemplate.send()方法发送消息时,如果主题名中包含“{}”,则PulsarTemplate将自动创建动态主题并根据配置进行分区。例如:

pulsarTemplate.send("my-topic-{}", "hello");

将会自动创建名为“my-topic-0”到“my-topic-9”的10个主题,并向其中一个随机的分区发送消息“hello”。

useSendAsync

在 application.yml 文件中,可以根据需要修改 Pulsar 的配置参数,包括 useSendAsync 参数,该参数用于控制 Pulsar 客户端是否使用异步发送消息模式。如果设置为 true,则客户端使用异步发送消息模式;如果设置为 false,则客户端使用同步发送消息模式。例如:

pulsar:
  serviceUrl: pulsar://localhost:6650
  useSendAsync: true

在上述配置中,Pulsar 服务的地址为 localhost:6650,useSendAsync 参数被设置为 true,表示使用异步发送消息模式。您可以根据实际需求修改此参数的值。

blockIfQueueFull

Pulsar的blockIfQueueFull配置参数用于控制当生产者尝试将消息发送到已满的队列时的行为。

blockIfQueueFull配置参数设置为true时,生产者线程将被阻塞,直到有空间可用。这可能会导致消息发送操作的延迟。

blockIfQueueFull配置参数设置为false时,生产者线程将立即收到ProducerQueueIsFullError异常,这可能会导致消息发送操作失败。

在application.yml中配置blockIfQueueFull参数的示例如下:

pulsar:
  producer:
    blockIfQueueFull: true

producerNamePrefix

在application.yml中配置Pulsar的producerNamePrefix,可以在Pulsar生产者中设置生产者名称前缀,使所有生产者名称都以该前缀开头。以下是配置示例:

pulsar:
  serviceUrl: pulsar://localhost:6650
  producerNamePrefix: my-prefix-

在上面的示例中,producerNamePrefix被设置为"my-prefix-",因此所有Pulsar生产者的名称都以 "my-prefix-" 开头。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值