novolis-messaging / design.md
Design
Channels and messaging cores
dotnetmessagingnovolis
Packages
| Package | Responsibility |
|---|---|
Novolis.Messaging.Channels | Singleton Channel<T>, reader, and writer registration |
Novolis.Messaging | Pulse types, flows, conduits, and handler dispatch |
Novolis.Messaging.ServiceBus.* | Service Bus facet: primitives, ports, Azure client, Almost broker |
Channels
ChannelSettings controls single-reader/writer defaults and bounded queue behavior. Factories are registered once per service collection.
Messaging
Pulses carry a Guid and timestamp. Flows match pulse types to IPulseHandler implementations. Misrouted pulses raise IncompatibleFlowException.
Service Bus
Novolis.Messaging.ServiceBus.Message<T> is separate from in-process Novolis.Messaging.Message<T>. Everyday fields are payload and ids; broker metadata lives on message.Advanced. One Client (Azure.Messaging.ServiceBus) targets cloud Azure or AlmostServiceBus.
Consumers
Frank.WireFish uses channels for DevicePacket fan-out; application services can combine both packages for domain events.