GuidA that groups all messages belonging to the same business transaction or workflow.
All related messages should share the same correlation ID regardless of their parent-child relationships.
GuidA that uniquely identifies this message instance. This value should be set when
the message is created and remain constant throughout the message’s lifetime.
ConcurrentDictionary<string, object>A where keys are string identifiers and values are objects
containing the metadata. The dictionary must be thread-safe as it may be accessed concurrently.
Guid?A nullable that identifies the immediate parent message. This value should be null
for root messages that start a new workflow, and set to the parent’s ID for derived or spawned messages.
MessageBase provides a convenient base class that implements all core message interfaces, making it easy
to create new message types without having to implement the common functionality manually. It automatically
handles ID generation, metadata initialization, tracking properties, and provides constructors for creating
child messages with proper lineage tracking.This class is abstract and must be inherited to create concrete message types. It’s recommended to use this
base class for most message implementations unless you have specific requirements that prevent inheritance.