The main goal of this issue is to create a viable demo of a two-way publish-subscriber between a C#/.NET and Python services using Kafka. This will help us simulate real-world development should we decide to implement Kafka either as a primary communication protocol, or as a redundancy solution should others fail or shown to underperform.
Background
During the SRR dry run, GCS was suggested by faculty and NG advisors to research and come up with a list of candidate publish-subscribe protocols other than RabbitMQ. However, it would be inefficient to try one protocol at a time like how we did with WebSocket & ROS. Therefore, we are splitting this tasks to various members of the team.
Requirements
Backend - C#/.NET
Listens for telemetry & allow users to input commands.
For this task, use two simple .NET Console applications that utilizes Kafka, for telemetry and commands, to simulate GCS-to-vehicle interactions.
Vehicle - Python
Repeatedly sends telemetry and listens for commands.
For this task, use two simple Python scripts that utilizes Kafka, for telemetry and commands shall be enough, to simulate vehicle-to-GCS interactions.
Broker Server
In Kafka, broker servers are called clusters.
Use Docker to get a Kafka cluster up and running.
Task Documentation
It is crucial that you keep track of how you've made it to work via some form of documentation. Could be using a README file or whatever works for you.
Issue Goal
The main goal of this issue is to create a viable demo of a two-way publish-subscriber between a C#/.NET and Python services using Kafka. This will help us simulate real-world development should we decide to implement Kafka either as a primary communication protocol, or as a redundancy solution should others fail or shown to underperform.
Background
During the SRR dry run, GCS was suggested by faculty and NG advisors to research and come up with a list of candidate publish-subscribe protocols other than RabbitMQ. However, it would be inefficient to try one protocol at a time like how we did with WebSocket & ROS. Therefore, we are splitting this tasks to various members of the team.
Requirements
Backend - C#/.NET
Vehicle - Python
Broker Server
Task Documentation
It is crucial that you keep track of how you've made it to work via some form of documentation. Could be using a README file or whatever works for you.
Detailed Overview
Get Started Here!
NATS by Example - Core Publish/Subscribe