4

我知道在 Kafka 中,消费者从代理主题中提取消息(拉取)?

receive考虑到方法阻塞,我觉得 Pulsar 的工作方式相同。但我找不到确认。有人可以指点我参考或纠正我吗?

谢谢

4

2 回答 2

2

Pulsar 的文档清楚地解释了消息消费的工作原理:

Pulsar Consumer 源从 Apache Pulsar 集群中的一个或多个主题读取消息。

Pulsar Consumer 源订阅 Pulsar 主题,处理传入的消息,然后在读取消息时将确认发送回 Pulsar。


可以同步(sync)或异步(async)从代理接收消息。

receive方法同步接收消息。消费者进程将被阻塞,直到有消息可用。例如,

Message msg = consumer.receive();

一旦有新消息可用,异步接收将立即返回一个完成的类型值。CompletableFuture例如,

CompletableFuture<Message> asyncMessage = consumer.receiveAsync();
于 2020-04-09T20:28:58.383 回答
1

在 Pulsar文档中:

消费者端有一个队列,用于接收从代理推送的消息。您可以使用 receiverQueueSize 参数配置队列大小。默认大小为 1000)。每次调用 consumer.receive() 时,都会从缓冲区中取出一条消息。

因此代理将消息推送到消费者端的队列。当receive调用该方法时,一条消息将被出列并返回。

当队列的一半被消耗时,Pulsar 消费者会定期向 Pulsar 代理发送许可请求以请求更多消息。这在此处进行了描述。

简而言之,如此处所述

Pulsar 还使用基于推送的方法,但使用模拟消费者拉动的 API。

于 2020-11-26T10:30:03.027 回答