2020-06-03 08:48:30 UTC - Gilles Barbier: @Thomas Jamet to obtain this result
and keeping the benefits of using schema, I use an envelope: a message that
contains a type and one of possible message, eg.
```{
"type": "record",
"name": "AvroForEngineMessage",
"namespace": "com.zenaton.jobManager.messages",
"fields": [
{
"name": "type",
"type": {
"type": "enum",
"name": "AvroForEngineMessageType",
"symbols": [
"CancelJob",
"DispatchJob",
"RetryJob",
"RetryJobAttempt",
"JobAttemptCompleted",
"JobAttemptFailed",
"JobAttemptStarted"
]
}
}, {
"name": "jobId",
"type": "string",
"logicalType": "uuid"
}, {
"name": "CancelJob",
"type": ["null", "com.zenaton.jobManager.messages.AvroCancelJob"],
"default": null
}, {
"name": "DispatchJob",
"type": ["null", "com.zenaton.jobManager.messages.AvroDispatchJob"],
"default": null
}, {
"name": "RetryJob",
"type": ["null", "com.zenaton.jobManager.messages.AvroRetryJob"],
"default": null
}, {
"name": "RetryJobAttempt",
"type": ["null",
"com.zenaton.jobManager.messages.AvroRetryJobAttempt"],
"default": null
}, {
"name": "JobAttemptCompleted",
"type": ["null",
"com.zenaton.jobManager.messages.AvroJobAttemptCompleted"],
"default": null
}, {
"name": "JobAttemptFailed",
"type": ["null",
"com.zenaton.jobManager.messages.AvroJobAttemptFailed"],
"default": null
}, {
"name": "JobAttemptStarted",
"type": ["null",
"com.zenaton.jobManager.messages.AvroJobAttemptStarted"],
"default": null
}
]
}```
----