生产者报错Producer send queue is full

生产消息时报如下错误导致生产失败:

org.apache.pulsar.client.api.PulsarClientException$ProducerQueueIsFullError: Producer send queue is full at org.apache.pulsar.client.impl.ProducerImpl.canEnqueueRequest(ProducerImpl.java:715)
 
报错原因:
  1.生产者异步批量发送;
  2.blockIfQueueFull参数为false;
  3.发送速率过大,客户端缓冲队列已打满;
 
解决办法:
  1.可以将blockIfQueueFull参数设置为true,这样当客户端缓冲队列满了之后调用生产方法的线程就会阻塞而不会抛异常;
  2.可以通过调大batchingMaxMessage参数扩充缓冲队列大小,同时调小batchingMaxPublishDelay参数降低发送延迟;
  3.可以每次发送前主动调用生产者的flush方法清空缓冲队列;
posted @ 2024-06-19 19:16  甜甜的翠西  阅读(23)  评论(0编辑  收藏  举报