Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quorum Queues v4 #8261

Closed
5 of 12 tasks
kjnilsson opened this issue May 22, 2023 · 4 comments
Closed
5 of 12 tasks

Quorum Queues v4 #8261

kjnilsson opened this issue May 22, 2023 · 4 comments
Assignees
Milestone

Comments

@kjnilsson
Copy link
Contributor

kjnilsson commented May 22, 2023

This is a prioritised list of required and optional features for the next version of quorum queues. Due to quorum queues' Raft internals it makes sense for us to bundle a set of features into a single change and this issue aims to capture and discuss the features for the next iteration.

Required:

Optional:

  • Consumer return ordering option (to ensure messages in the return queue are ordered in their arrival order rather than their return order as is currently done). Should be optional as could have a negative performance impact.
  • Option to return messages without increasing delivery count. This is a feature that AMQP 1.0 require when using the released disposition. This may well require consumer return ordering.
  • Pausing consumers
  • Message lock renewal (for queue based consumer timeouts).
  • rejection annotations: AMQP 1.0 (via the modified outcome) and MQTT 5.0 can supply annotations along with the message outcome / rejection. If we add support for these in the queue type they could potentially be used to route dead letter messages in the future.

Implementation details

Fair/share priorities

Consumer timeouts

Single Active Consumer Priorities

The waiting consumers list should be sorted by consumer priority.
When a consumer with a higher priority than the current active one attaches it would demote the current active one. This could provide a means for users to achieve better consumer app balances and avoid the all consumer on one app issue when using multiple queues with SAC.

Checkpoints

Consumer cancel option that immediately removes consumer and returns all pending messages.

@ansd
Copy link
Member

ansd commented Jun 7, 2023

One more feature:

  • Respect max-length limit for publications without confirms when overflow behaviour is reject-publish.

@chenchen300
Copy link

Priorities (at least two) from my POV are mandatory. We can't migrate our classic queues to quorum without priorities

@kjnilsson
Copy link
Contributor Author

kjnilsson commented Aug 18, 2023 via email

@michaelklishin
Copy link
Member

Priorities (at least two) from my POV are mandatory. We can't migrate our classic queues to quorum without priorities

Yes, you usually can. By using multiple queues instead of just one with priorities.

This belongs to a discussion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants