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

Add a new local random exchange type. #10091

Merged
merged 1 commit into from
Jun 12, 2024
Merged

Conversation

kjnilsson
Copy link
Contributor

Co-authored-by: Marcial Rosales mrosales@pivotal.io

This exchange type will only bind classic queues and will only return routes for queues that are local to the publishing connection. If more than one queue is bound it will make a random choice of the locally bound queues.

This exchange type is suitable as a component in systems that run highly available low-latency RPC workloads.

Fixes #8334

@mergify mergify bot added the bazel label Dec 11, 2023
@kjnilsson kjnilsson mentioned this pull request Dec 11, 2023
10 tasks
@kjnilsson kjnilsson changed the title Add new local random exchange type. Add a new local random exchange type. Dec 11, 2023
@kjnilsson kjnilsson added this to the 4.0.0 milestone Dec 11, 2023
@mkuratczyk mkuratczyk force-pushed the rabbit-local-random-exchange branch from 1c28c8c to 71d3017 Compare May 28, 2024 10:09
@kjnilsson kjnilsson force-pushed the rabbit-local-random-exchange branch 2 times, most recently from 1fec4d4 to f14a10e Compare June 6, 2024 14:30
@kjnilsson kjnilsson marked this pull request as ready for review June 6, 2024 14:30
@ansd ansd self-requested a review June 6, 2024 17:34
Copy link
Contributor

@lhoguin lhoguin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When testing I had troubles because the routing key must be empty, and I didn't know how to specify that in how I ran perf-test (long story). I managed to test thanks to kura. But perhaps the routing key should be ignored instead of forced empty? Like fanout. Just a suggestion, I don't have strong feelings either way.

All good otherwise!

@kjnilsson
Copy link
Contributor Author

When testing I had troubles because the routing key must be empty, and I didn't know how to specify that in how I ran perf-test (long story). I managed to test thanks to kura. But perhaps the routing key should be ignored instead of forced empty? Like fanout. Just a suggestion, I don't have strong feelings either way.

So the binding key is validated to be empty as then we get the fastest routing query with khepri.

@kjnilsson kjnilsson force-pushed the rabbit-local-random-exchange branch 3 times, most recently from 8e7bd20 to 663aa35 Compare June 10, 2024 11:16
@mkuratczyk
Copy link
Contributor

@kjnilsson kjnilsson force-pushed the rabbit-local-random-exchange branch 8 times, most recently from b660ffd to 8074788 Compare June 12, 2024 16:16
This exchange type will only bind classic queues and will only return
routes for queues that are local to the publishing connection. If more than
one queue is bound it will make a random choice of the locally bound queues.

This exchange type is suitable as a component in systems that run
highly available low-latency RPC workloads.

Co-authored-by: Marcial Rosales <mrosales@pivotal.io>
@kjnilsson kjnilsson force-pushed the rabbit-local-random-exchange branch from 8074788 to cca64e8 Compare June 12, 2024 16:16
@kjnilsson kjnilsson merged commit 5f79dec into main Jun 12, 2024
210 of 212 checks passed
@kjnilsson kjnilsson deleted the rabbit-local-random-exchange branch June 12, 2024 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants