Clients of HTTP services can specify the version (and format) they understand by requesting or posting data with a specific content type. The HTTP protocol defines error codes for reporting that the content type is not understood.
Messaging systems (e.g. JMS, MQ Series and the like) do not have a standard way of describing message protocol versions and content formats.
How have you implemented versioning for services accessed over reliable, asynchronous messaging?
Some possibilities:
I'm sure there are other ways. How did you do it? What advantages and disadvantages did you find?
One advantage for specifying the version outside of payloads is that it can be easier to figure out which bit of code can cope with the payload. It also allows you to radically change the payload contents with new versions. It can also make it easier to route messages.
Overall I don't think there is a right or wrong answer here, all the options you specified can be worked with, and your favourite messaging bus may have a "best practice" that you should follow.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With