Pulsar Messaging(二)


consumer是通过订阅附加到topic,然后接收消息的过程。

Consumer 向 broker 发送消息流获取申请(flow permit request)以获取消息。 在 Consumer 端有一个队列,用于接收从 broker 推送来的消息。 你能够通过receiverQueueSize参数配置队列的长度 (队列的默认长度是1000) 每当 consumer.receive() 被调用一次,就从缓冲区(buffer)获取一条消息。

接收模式

可以通过同步(sync) 或者异步(async)的方式从brokers接受消息。

发送模式 说明
同步接收 同步模式,在收到消息之前都是被阻塞的。
异步接收 异步接收模式会立即返回一个 future 值(如 Java 中的 CompletableFuture),一旦收到新的消息就立刻完成。

监听

客户端库为使用者提供侦听器实现。例如,Java客户端提供了一个MessageListener接口。在这个接口中,一旦接受到新的消息,received方法将被调用。

确认

消费者在成功消费一个消息后,向 Broker 发送一个确认请求。 然后,这条被消费的消息将被永久保存,只有在所有订阅者都确认后才会被删除。 如果希望消息被消费者确认后仍然保留下来,可配置消息保留策略实现。

对于批处理消息,你可以启用批处理索引确认,以避免将确认的消息分派给消费者。 关于批量索引确认的细节,请参见batching

消息可以通过以下两种方式之一进行确认。

  • 被单独承认。通过单独的确认,消费者确认每条消息,并向broker发送确认请求。
  • 累积确认模式。通过累积确认,消费者只确认其收到的最后一条消息,所有之前(包含此条)的消息,都不会被再次发送给那个消费者。

如果你想单独确认消息,你可以使用以下API。

consumer.acknowledge(msg);

如果你想累计确认消息,你可以使用以下API。

consumer.acknowledgeCumulative(msg);

Note
在共享订阅模式中不能使用累积确认,因为共享订阅模式涉及多个可以访问同一订阅的使用者。在共享订阅模式下,消息会被单独确认。

取消确认

当一个消费者未能消费一个消息并打算再次消费它时,这个消费者应该向 Broker 发送一个否定的确认。 然后,Broker 将把这个消息重新传递给消费者。

根据消费订阅模式,单

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值