Skip to content

Feature Request: Add option for isolated connections for Pulsar consumers and producers #23403

Description

@lhotari

Motivation

Currently, in Pulsar, TCP connections are shared across all consumers and producers for a client. This can lead to issues with backpressure and flow control, particularly for producers. The shared connection usage causes head-of-line blocking problems. To address this, it is proposed to add configuration options to allow consumers and producers to use isolated TCP/IP connections or connection groups.

  • Allow configuring individual consumers or producers to use a dedicated, non-shared TCP connection (or connection group) to the broker.
  • Provide an option for multi-partition producers to allow sharing of the dedicated connections for all partitions of that producer instance.
  • Implement similar isolation options for consumers.
  • This feature would complement the proposed throttling-based flow control solution in "PIP-385: Add rate limit semantics to Pulsar protocol and Java Client" [improve][pip] PIP-385 Add rate limit semantics to pulsar protocol and Java Client #23398, providing an additional mechanism to improve connection management and reduce interference between different producers/consumers.
  • The isolation options would be configurable through the client API, allowing developers to fine-tune connection usage based on their specific requirements.

Benefits

  • Reduced interference between producers/consumers sharing connections
  • More predictable performance for high-priority or high-volume producers/consumers
  • Easier troubleshooting of connection-related issues

This feature provides a simple improvement in connection management and performance isolation, which can be implemented as an interim solution or alongside more comprehensive flow control mechanisms such as PIP-385.

Additional Context

Metadata

Metadata

Assignees

Labels

type/enhancementThe enhancements for the existing features or docs. e.g. reduce memory usage of the delayed messages

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions