Let's say we use message contracts based on interfaces, as recommended for MassTransit for example.
First how are those interfaces shared across all the applications? Let's say we provide them in a nuget package. (Is that the way to go?)
So second, how do we now make sure all the applications use the same version?
Should we use new interfaces every time (e.g. messageV1, messageV2) to be backwards compatible? That would require us to send multiple messages at once instead of 1...
Or should we have an upgrade window, where all applications are updated at the same time?
Please check out both the answers and the comments, if you are looking in the same.
Really got some quality feedback here :D