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:
- The sender indicates the version as a message property
- Queue or Topic names include the protocol version of the messages accepted at that destination
- The version is in the payload of the message
I'm sure there are other ways. How did you do it? What advantages and disadvantages did you find?