This is from the Cadence blog series below. It uses Cadence workflows and multiple Kafka integration patterns to simulate a drone delivery system. The demo showcases order and delivery workflows orchestrated by Uber Cadence with Apache Kafka handling the messaging between microservices.
The application demonstrates:
- Order placement and processing workflows
- Drone delivery assignment and tracking
- Integration patterns between Cadence workflows and Kafka topics
- Scalability testing (how many drones can we fly?)
- Part 1: Spinning Your Workflows With Cadence!
- Part 2: Spinning Apache Kafka Microservices With Cadence Workflows
- Part 3: Spinning Your Drones With Cadence - Introduction
- Part 4: Architecture, Order and Delivery Workflows
- Part 5: Integration Patterns and New Cadence Features
- Part 6: How Many Drones Can We Fly?
- Order Workflows: Manages the lifecycle of customer orders from placement through fulfillment
- Delivery Workflows: Coordinates drone assignment, pickup, transit, and delivery stages
- Kafka Integration: Uses multiple Kafka topics for communication between workflow stages and microservices
- Web Dashboard: Includes an HTML-based visualization for monitoring drone delivery status
- Scalability: Designed to test concurrent workflow execution and Kafka throughput under load
- Configure your Kafka broker IPs and credentials in
consumer.propertiesandproducer.properties. - Update the Cadence host IP address in the Java source files.
- Build the project using Maven:
mvn clean install
- Start the Kafka consumers for processing delivery events.
- Launch the Cadence workflow starters to begin placing orders and dispatching drones.
- Open the included HTML dashboard to visualize drone delivery progress.
Refer to the blog series for detailed step-by-step walkthrough of the full demo setup.
- Java 8 or higher
- Apache Maven for building the project
- Apache Kafka cluster (e.g., Instaclustr managed Kafka) with SASL authentication and auto topic creation enabled
- Cadence server (e.g., Instaclustr managed Cadence)
- The IP address of the machine running the code must be added to both Kafka and Cadence cluster firewall configurations
- Kafka broker IPs, username, and password configured in the properties files
- Cadence host IP set in the Java source files
This project is intended to run as a local demo against remote Kafka and Cadence clusters:
- Provision an Instaclustr Kafka cluster with SASL authentication and auto topic creation enabled.
- Provision an Instaclustr Cadence cluster.
- Add your client machine's IP to the allowed firewall rules for both clusters.
- Update the properties files and source code with your cluster connection details.
- Build and run the application as described in Getting Started.
- Paul Brebner - Initial work - NetApp Instaclustr
See also the list of MAINTAINERS who participated in projects in this repository.
This project is licensed under the MIT License - see the LICENSE.md file for details