Thanks for the detail @timpamungkas.
The C# and Python clients seem reliable, and they are not hard to patch / pull request if you find something that isn’t working for you.
The benefits of using Zeebe include reification of your business process, which enables you to inspect the current state of any instance in a GUI; reporting on overall system load / through-put metrics at the business level (by querying Elastic Search); and making business process changes at a high-level where BAs and management can look at the process diagram.
In a peer-to-peer choreography scenario, you need to deal with the eventuality where the recipient service is down.
In the Zeebe architecture, services pull work from the broker, so if a service is down, the current process state is in the broker until the service recovers.
Alerting when a service goes down can be done with service monitoring. If you want business alerting (this particular process instance is blocked and at risk of exceeding its SLA), then you need to model that with things like sub-processes a with boundary interrupt timer.
You do need to mitigate against the broker going away, and a message to the broker going into retry in a service, and then the service failing and losing its in-memory state.
In this case, the transactional outbox pattern could be used to deal with this. Rather than publishing messages directly to the broker, services could publish messages to the RabbitMQ service to be routed to the the broker.
Messages are used for decoupled asynchronous events. When you have a sequential event - some work pulled by a service, and then a response returned from the service before the process continues - you can model that with the job lifecycle: service activates a job, does some work, then completes the job, optionally with some update to the process state.
In terms of reusing RabbitMQ listeners/publishers: it depends.
A good way to approach this is to start to model your existing system in BPMN with the Zeebe Modeler, to get an idea of how a BPMN system is structured. You can get feedback on your model here, and rinse and repeat until you have a good grasp of what it could look like.