Uforwarder is a proxy that transfers data from kafka to message consumer through RPC protocol. Uforwarder aims to achieve reliable message delivery in realtime at scale through simple RPC protocol between Kafka and consumers.
Properties and Traits:
RPC protocol supported
For an overview of the project, please read the Uber Engineering blog Enabling Seamless Kafka Async Queuing with Consumer Proxy
./gradlew jar
./gradlew test
./gradlew integrationTest
./gradlew check
./gradlew jar
cd uforwarder-image/build/docker
docker build -t uforwarder:latest .
docker network create docker-network
docker run --env ALLOW_ANONYMOUS_LOGIN=yes --network docker-network -p 2181:2181 --name zookeeper zookeeper:3.8.0
docker run --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 --env KAFKA_LISTENERS=DOCKER://0.0.0.0:9092,HOSTER://0.0.0.0:9093 --env KAFKA_ADVERTISED_LISTENERS=DOCKER://kafka:9092,HOSTER://localhost:9093 -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=DOCKER:PLAINTEXT,HOSTER:PLAINTEXT -e KAFKA_INTER_BROKER_LISTENER_NAME=DOCKER --network docker-network -p 9093:9093 --name kafka confluentinc/cp-kafka:7.6.1
docker run --env UFORWARDER_PROFILE=uforwarder-controller --env UFORWARDER_KAFKA_CONNECT=kafka:9092 --env UFORWARDER_ZOOKEEPER_CONNECT=zookeeper:2181/uforwarder --network docker-network --name controller -p 8087:8087 uforwarder:latest
docker run --env UFORWARDER_PROFILE=uforwarder-worker --env UFORWARDER_KAFKA_CONNECT=kafka:9092 --env UFORWARDER_CONTROLLER_CONNECT=controller:8087 --network docker-network --name worker uforwarder:latest
./gradlew uforwarder-sample-consumer:bootRun
./data/kafka/uforwarder-gradle-repo/uforwarder-microrepo-release-script.sh
cd ../uForwarder
Examine the changes in the uForwarder microrepo and commit them by running the following command
git push origin uber_main
We accept contributions through Pull Requests (PR's). Please sign our Contributing License Agreement (CLA) after you submit the PR, so that it can be accepted.
Apache License Version 2.0
uforwarder-committers@googlegroups.com