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

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions