-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Kafka-mesh filter #11936
Kafka-mesh filter #11936
Conversation
CC @envoyproxy/api-shepherds: Your approval is needed for changes made to |
7e7ea5f
to
2ecbd19
Compare
This pull request has been automatically marked as stale because it has not had activity in the last 7 days. It will be closed in 7 days if no further activity occurs. Please feel free to give a status update now, ping for review, or re-open when it's ready. Thank you for your contributions! |
8ea61ac
to
a35ea7c
Compare
Retrying Azure Pipelines, to retry CircleCI checks, use |
d6e2bd6
to
e49dbde
Compare
Ready for review - also ran some Java tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cool, thanks. A few small comments.
/wait
clusters, depending on configured forwarding rules. Corresponding message versions from | ||
Kafka 2.4.0 are supported. | ||
|
||
.. attention:: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you also add an attention/warning here that this is only available on contrib builds with a link? See what we do for squash and some of the other contrib filters and please unify as needed, thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done - comments and missing link added; same for kafka-broker
// Kafka Mesh filter | ||
const std::string KafkaMesh = "envoy.filters.network.kafka_mesh"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we are trying to get rid of this file. Can you just inline this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
Signed-off-by: Adam Kotwasinski <adam.kotwasinski@gmail.com>
Signed-off-by: Adam Kotwasinski <adam.kotwasinski@gmail.com>
Retrying Azure Pipelines: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Commit message: Kafka-mesh filter
Additional Description:
Kafka mesh filter.
Can be put between native Kafka client and intercept produce requests to forward them to upstream Kafka clusters as per its fowarding rules. Right now there's only one type of rule - prefix by topic name (so e.g. we can send messages to topics
a*
and have them in cluster 1, while others go to cluster 2). Only produce requests for now. Support for consumers would be more complex or require more limitations (as Kafka consumers keep state, so it's not like Redis - or actually it's like Redis pub/sub).Doesn't work on Windows because of librdkafka compilation issues (and I don't have a Windows machine).
Risk Level: Low
Testing: Unit tests + integration test (2 kafka clusters are started + proxy in between + producer) + manual testing.
Docs Changes: New .rst & .proto files, as we have a new filter.
Release Notes: N/A
Without getting into too much details:
dispatcher.post
to have the delivery confirmation back to normal worker thread).Other PRs for kafka-mesh work (merged independently):
#17202
#17374
#17475
#17597
#17783
#17818
#17839
#17887