builder实现是ClientBuilderImpl,.listenerThreads、.ioThreads都是ClientBuilderImpl的API,参数统一放到ClientConfigurationData中,该对象保存client配置信息。 简化版: public class ClientBuilderImpl implements ClientBuilder { ClientConfigurationData conf; public PulsarClient build(){ ... PulsarClient client = new Pu...
为了再次确认是不是和 ackTimeout 有关,直接将 .ackTimeout(30, TimeUnit.SECONDS) 注释掉后测试,发现也没有重复消费了。确认原因 既然如此那一定是和这个配置有关了,但看代码确实没有超时,为了定位具体原因只有去看 client 的源码了。这里简单梳理下消息的消费的流程:根据 .receiverQueueSize(1000) 的配置...
pulsar-client:数据流客户端,通常被业务使用,比如最基础的发布、订阅消息。 pulsar-client-1x-base:Pulsar 对 1.x 版本的协议做了兼容,这个是 1.x 版本的协议的客户端。 pulsar-client-admin:管理流客户端,用于调用管理相关的接口,比如创建、删除 Topic。 pulsar-client-admin-api:管理流客户端相关的接口。 pul...
pulsar-client-admin:管理流客户端,用于调用管理相关的接口,比如创建、删除 Topic。 pulsar-client-admin-api:管理流客户端相关的接口。 pulsar-client-all:单纯用于构建完整的客户端,管理流和数据流都打到一个包里。 pulsar-client-api:Client 的通用 API。 pulsar-client-auth-athenz:Client 的 Athenz 身份验证插件。
2、PulsarClient 3、Producer 4、Consumer 4.1 第⼀次使⽤:4.2 第⼆次使⽤:4.3 第三次使⽤:4.4 第四次使⽤:4.5 第五次使⽤:重试机制源码分析 4.6 第六次使⽤ 1、使⽤前准备 引⼊依赖:<dependency> <groupId>org.apache.pulsar</groupId> <artifactId>pulsar-client</...
深入Pulsar Consumer的使用方式&源码分析,原文链接1、使用前准备引入依赖:<dependency><groupId>org.apache.pulsar</groupId><artifactId>pulsar-client</artifactId><version>2.6.1</version></dependency>2、P...
pulsar-client:数据流客户端,通常被业务使用,比如最基础的发布、订阅消息。 pulsar-client-1x-base:Pulsar 对 1.x 版本的协议做了兼容,这个是 1.x 版本的协议的客户端。 pulsar-client-admin:管理流客户端,用于调用管理相关的接口,比如创建、删除 Topic。
他发现手动将 pulsar-client-go 客户端的ReceiverQueueSize设置为 0 的时候,客户端在初始化时会再将其调整为 1000. if options.ReceiverQueueSize < 0 { options.ReceiverQueueSize = defaultReceiverQueueSize } 而如果手动将源码修改为可以设置为 0 时,却不能正常消费,消费者会一直处于 waiting 状态,获取不到任...
他发现手动将 pulsar-client-go 客户端的ReceiverQueueSize设置为 0 的时候,客户端在初始化时会再将其调整为 1000. ifoptions.ReceiverQueueSize <0{ options.ReceiverQueueSize = defaultReceiverQueueSize } 而如果手动将源码修改为可以设置为 0 时,却不能正常消费,消费者会一直处于 waiting 状态,获取不到任何数...
既然如此那一定是和这个配置有关了,但看代码确实没有超时,为了定位具体原因只有去看 client 的源码了。 这里简单梳理下消息的消费的流程: 根据.receiverQueueSize(1000) 的配置,默认情况下 broker 会直接给客户端推送 1000 条消息。 客户端将这 1000 条消息保存到内部队列中。