Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epic: Versioning of Message Payloads #37

Open
gsteinacker opened this issue Oct 25, 2018 · 0 comments
Open

Epic: Versioning of Message Payloads #37

gsteinacker opened this issue Oct 25, 2018 · 0 comments
Assignees
Labels
enhancement EPIC Labels Epics that consist of multiple issues to do
Projects
Milestone

Comments

@gsteinacker
Copy link
Member

Currently, it is not possible to migrate the format of message payloads beside of adding optional properties to the json structure.
The aim of this issue is to add the capability to support different payload versions in a single channel.
There are at least two possibilities to do so:

A) Determining the payload version by introspecting the message payload itself or
B) Determining the payload version by supporting version information as meta-data in the message header.

Possibility A is easier to implement, but B has a few advantages:

  • It is easier and less time consuming to check for a message header than parsing payloads, especially if the payload is large.
  • Using meta-data instead of parsing the payload is the cleaner solution, making versions more explicit and helping developers to understand the behavior of the messaging system.
  • If it is possible to introduce message headers for a version (without losing header information during compaction), it is also easy to introduce further header information such as timestamps or correlation identifiers.

Especially because of the latter point, this epic is following solution B by:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement EPIC Labels Epics that consist of multiple issues to do
Projects
Synapse
  
To do
Development

No branches or pull requests

1 participant