You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Different parts of the event flow may be changed over time
Communication Interfaces & DTOs
Communication channels
Metadata (properties)
Storage strategy
Requirements
Processing sequence should be maintained (at least for some scenarios)
Problem
Newer message version may not be compatible with old versions.
Solution: Naming convention
DTO / Operations name must end with Version indication.
any change should result in different suffixes.
Challenge
A consumer should be capable of handling multi-version in some filtering logic of first win.
Mitigation
// pseudo code.Subscribe<IHandlerV9>(v =>v >= 1);.Subscribe<IHandlerV13>(v =>v >= 10&&v<14);.Subscribe<IHandlerV17>(14,17);// handle version 14 -17.Subscribe<IHandlerV18>(18);// handle version 18.Fallback(meta =>{ logger.LogWarning($"version {meta.Version} is missing");return Instruction.Hang;// release ownership & hand consumption for awhile in hope of newer consumer to take the message });
All subscriptions should register (sequentially to the channel) in order to keep sequential processing
Problem: enforce naming convention
Suggestion: Source Generator for the interfaces & DTOs (maybe over proto files)
Problem: Channel behavior compatibility
Channel properties or storage-strategy may change.
Solution: Chanel storage compatibility
Consumer channel can register multiple message formatter & storage strategies
Keeping code relative clean
All different version related code should be consumed via DI
The text was updated successfully, but these errors were encountered:
Source Generator can solve the versioning issue.
Brainstorm versioning logic
Why versioning
Different parts of the event flow may be changed over time
Requirements
Problem
Solution: Naming convention
DTO / Operations name must end with Version indication.
any change should result in different suffixes.
Challenge
A consumer should be capable of handling multi-version in some filtering logic of first win.
Mitigation
All subscriptions should register (sequentially to the channel) in order to keep sequential processing
Problem: enforce naming convention
Problem: Channel behavior compatibility
Solution: Chanel storage compatibility
Keeping code relative clean
All different version related code should be consumed via DI
The text was updated successfully, but these errors were encountered: