在 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支持以下三种订阅初始位置(即消费者对于消息的起始消费位置):
- Latest:消费者从最新的消息开始消费,忽略订阅之前发布的所有消息。
- Earliest:消费者从最早的消息开始消费,包括订阅之前发布的所有消息。
- 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-" 开头。