Matt-Esch commented on issue #230:
URL: 
https://github.com/apache/pulsar-client-node/issues/230#issuecomment-1239819312

   If the async flush method isn't flushing correctly, this is likely to be an 
issue in the underlying pulsar library. I don't doubt that it's possible for 
the library to not flush correctly, but I don't see any issue in the calling 
code in the node wrapper. 
https://github.com/apache/pulsar-client-node/blob/master/src/Producer.cc#L136
   
   It's also possible that async publish increases the throughput making it 
easier to fill the queue. The problem with the sync methods with the async 
worker threads is that they are limited in concurrency so it might be enough 
back pressure to prevent you running into the queue full issue. There was also 
an issue with calling send because unless you waited for each send to complete, 
they could happen out of order, further reducing the throughput.
   
   It looks like the issue you referenced comes to similar conclusions about 
the underlying behavior of the flush api in the C++ library. You didn't mention 
which specific version you are using, it was necessary to upgrade the client 
library to make all async methods work correctly.
   
   Personally if I was in your position I would either be looking to debug the 
C++ client library or I would be wrapping the publish code to backoff if the 
queue is full, i.e. handle the error with some backoff.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to