-
Notifications
You must be signed in to change notification settings - Fork 4k
Quorum queues #1706
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
Merged
Merged
Quorum queues #1706
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[#154472130]
Test queue.declare method with quorum type
Includes ra as a rabbit dependency [#154472152]
Basic implementation. Might need an update when more functionality is added to the quorum queues. [#154472152]
[#154472158]
[#154472164]
Improved ra stop [#154472158]
[#154472164]
[#154472158]
Now supported by ra [#154472158]
[#154472158]
[#154472164]
[#154472174]
[#154472164]
[#154472174]
[#154472211]
no_ack = true is equivalent to autoack [#154472211]
If we modify the data_dir, ra is not able to delete the data when a queue is deleted [#154472158]
[#154472158]
Supports auto-ack [#154472215]
[#154472221]
[#154804608]
[#154472198]
[#154472158]
To quorum-initial-group-size
Also avoid creating quorum queue session state on queue operation methods.
Exit with protocol error of a basic.consume for a quorum queue is issued on a channel with global qos enabled.
Strictly enfornce that channels do not monitor quorum queues.
To make it call classic and quorum queues the same way. [#161314899]
during recovery as they should not be marked as stopped during failed vhost recovery.
As the only user of this function, the management API no longer requires it.
[#161343680]
This change implements an alternative consumer credit mechanism similar to AMQP 1.0 link credit where the credit (prefetch) isn't automatically topped up as deliveries are settled and instead needs to be manually increased using a credit command. This is to be integrated with the AMQP 1.0 plugin. [#161256187]
Added support for AMQP 1.0 transfer flow control. [#161256187]
So that if a vhost crashes and runs the recover steps it doesn't fail because ra servers are still running. [#161343651]
To ensure quorum queues are cleaned up on vhost removal. Also fix xref issue. [#161343673]
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces a new queue type into RabbitMQ called "quorum queue". The amqqueue record has been augmented with a
type
field with two current valuesclassic
(which is the default, referring to the "normal" RabbitMQ queue implementation) orquorum
to denote that the queue is a quorum queue.Quorum queues use Raft to consistently replicate data across nodes and thus take a dependency on the Ra raft library. Ra provides an api where the "state machine" that runs inside Ra can be user provided by implementing a behaviour. The
rabbit_fifo
module implements thera_machine
behaviour to provide an AMQP-like queue running inside Ra. Therabbit_fifo_client
module abstracts away interactions with the RA/rabbit_fifo system.The current implementation includes significant changes to
rabbit_channel
to handle the new queue type. Currently it is implemented bearing only the two queue types in mind. If further queue types are added in the future this will probably need to change an a commonrabbit_queue
abstraction needs to be created to unify how client processes (currently channels) interact with queues of different types.