Comments (4)
The PartitionedConsumerImpl
uses a specific internal executor to handle that. See at :
The individual ConsumerImpl
instances inside the PartitionedConsumerImpl
will use that internalListenerExecutor
to push messages into the common queue. If the application stops calling receive()
, the common queue will get full and that will block the internal listener thread, but that will not block the IO threads, since they will just enqueue on the individual queues (which don't have size limit) and move on.
from pulsar.
Yes, I realize it will not block IO threads, but it will block other PartitionedConsumerImpl
that are using the same internalListenerExecutor
, a Client
creates an internalListenerExecutor
of size 1 by default, but even increasing the size is not a really good solution. If we intend on creating many consumers, it's not a good solution to have 1 thread per consumer, it doesn't scale.
It would be great if PartitionedConsumerImpl
could be a little more smart about handling messages, but this would probably need more communication between PartitionedConsumerImpl
and its internal ConsumerImpl
than we currently have. For example, ConsumerImpl
could try and add a message to PartitionedConsumerImpl
if it doesn't succeed then it could just remain in the queue, then, PartitionedConsumerImpl
could somehow notifying it's internal consumers that it has space so they pop messages from their queues.
from pulsar.
OK, that is a good point.
The key part is to leave the messages in the single topics queues, so that we can stop the broker from pushing more messages. If that can be done without recurring to blocking the intermediate listener thread, that would be great.
from pulsar.
Fixed by #106
from pulsar.
Related Issues (20)
- [Bug][broker] cursor will read in dead loop when do tailing-read with enableTransaction
- [Bug] Pulsar Functions ignores compressionType and crypto config for producers created with Context produce/newOutputMessage methods
- [Bug] Update partitions call is failing when topic level replication is disabled HOT 1
- As a websocket consumer I need to set InitialSubscriptionPosition to earliest HOT 1
- [Bug][broker] BrokerId npe when broker restart HOT 1
- [Bug] Unexpected Package Manager Behavior in Pulsar 3.3.0 Standalone Mode HOT 1
- [Bug] Dead lock error in Pulsar 3.0.
- [Bug] PulsarStandalone started with error if `--stream-storage-port` is not 4181
- [master branch] failed-test: OpenTelemetrySanityTest.testOpenTelemetryMetricsOtlpExport
- [Bug][broker] MessageDeduplication replay timeout would cause topic loading stuck and become unavailable
- [Bug] bin/pulsar-perf will cause the pulsar service to freeze
- [Bug][meta] Broker enter the loop to recreate zkSession failed, cause broker stuck
- [Doc] homepage 404
- [Bug][broker]PulsarRegistrationClient writableBookieInfo cache and readOnlyBookieInfo cache update fail causing broker to misjudge that the bookie is unavailable.
- [Bug][broker] Occur so many ERROR log in broker, which is confusing HOT 2
- [improve][broker] cursor read entry would trigger readMoreEntry() one more time when addWaitingCursor and notify
- [Bug] [broker] Non persistent topic will be lost when it is unloaded.
- [Bug] [broker]Sometime after reset cursor, unable to reconsume all messages in topic when ttl is less than retention time. HOT 2
- [Transaction] One single TC unavailable cause transactional throughput down to 0. HOT 1
- [Bug] bookie-2 is not able to recover after lossing the filesystem
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pulsar.