Renamed: This project was formerly called Deveel Events. As of 23 May 2026, the NuGet packages have been renamed from
Deveel.Events.*toHermodr.*. The old packages remain published and will be deprecated.
Packages
The framework is split into focused NuGet packages so you only take what you need.
Core packages
| Package | Description |
|---|---|
Hermodr.Annotations | Attributes for describing event metadata on your data classes |
Hermodr.Publisher | Core publisher infrastructure (EventPublisher, EventPublisherBuilder, DI helpers) |
Channel packages
| Package | Description |
|---|---|
Hermodr.Publisher.AzureServiceBus | Publish events to an Azure Service Bus queue or topic |
Hermodr.Publisher.RabbitMq | Publish events to a RabbitMQ exchange |
Hermodr.Publisher.MassTransit | Publish events through a MassTransit bus |
Hermodr.Publisher.Webhook | Deliver events to HTTP webhook endpoints |
Hermodr.Publisher.Outbox | Persist events to a transactional outbox for later relay |
Hermodr.Publisher.Outbox.EntityFramework | Entity Framework Core repository and helpers for the outbox channel |
Hermodr.Amqp.Annotations | AMQP-specific attributes (exchange name, routing key) |
Subscriptions package
| Package | Description |
|---|---|
Hermodr.Subscriptions | In-process event subscription registry and dispatcher |
Observability package
| Package | Description |
|---|---|
Hermodr.Publisher.OpenTelemetry | Distributed tracing with W3C trace context propagation via CloudEvents extensions |
Schema packages
| Package | Description |
|---|---|
Hermodr.Schema | Core schema model, fluent builder, JSON writer, and schema validation |
Hermodr.Schema.Yaml | Export an event schema as a YAML document |
Hermodr.Schema.AsyncApi | Export schemas as an AsyncAPI 2.x document (JSON or YAML) |
Test package
| Package | Description |
|---|---|
Hermodr.TestPublisher | In-memory test channel and helpers for unit tests |
Package Details
Hermodr.Annotations
Contains the [Event] and [EventProperty] attributes used to annotate data-transfer classes with event type metadata. No dependencies except the .NET BCL.
dotnet add package Hermodr.Annotations
Hermodr.Publisher
The heart of the framework. Provides:
EventPublisherIEventPublishChannelandIBatchEventPublishChannelEventPublisherBuilderfor fluent DI registrationIEventFactory,IEventIdGenerator, andIEventSystemTimeextensibility pointsEventPublisherOptionsfor global defaults- named publisher pipelines resolved through keyed DI
dotnet add package Hermodr.Publisher
Hermodr.Publisher.AzureServiceBus
Azure Service Bus channel implementation. Serialises CloudEvent objects as ServiceBusMessage instances and sends them to a configured queue or topic.
dotnet add package Hermodr.Publisher.AzureServiceBus
Hermodr.Publisher.RabbitMq
RabbitMQ channel implementation using the official RabbitMQ.Client library. Supports AMQP exchange/routing-key annotations, publisher confirms, and persistent messages.
dotnet add package Hermodr.Publisher.RabbitMq
Hermodr.Publisher.MassTransit
Wraps MassTransit's IPublishEndpoint / ISendEndpointProvider so events can be routed through any MassTransit-supported transport.
dotnet add package Hermodr.Publisher.MassTransit
Hermodr.Publisher.Webhook
Delivers events over HTTP to a webhook endpoint. Features HMAC signing (SHA-256/384/512), exponential-backoff retries, configurable headers, and pluggable serialisers.
dotnet add package Hermodr.Publisher.Webhook
Hermodr.Publisher.Outbox
Implements the transactional outbox pattern for event publishing. It adds the AddOutbox<TMessage>() builder entry point, outbox relay services, repository abstractions, and message-factory hooks for persisting events before relaying them to a transport-specific publisher pipeline.
dotnet add package Hermodr.Publisher.Outbox
Hermodr.Publisher.Outbox.EntityFramework
Adds Entity Framework Core integration for the outbox channel, including DbOutboxMessage, OutboxDbContext, and the WithEntityFramework() registration helper that wires an IOutboxMessageRepository<TMessage> backed by EF Core.
dotnet add package Hermodr.Publisher.Outbox.EntityFramework
Hermodr.Amqp.Annotations
Adds [AmqpExchange] and [AmqpRoutingKey] attributes to let you declare per-event-type AMQP routing metadata directly on your data classes. See RabbitMQ — AMQP Annotations for usage details.
dotnet add package Hermodr.Amqp.Annotations
Hermodr.Subscriptions
Adds an in-process event subscription registry and dispatcher middleware to the EventPublisher pipeline. Includes:
IEventSubscriptionandEventSubscription— the subscription modelIEventSubscriptionRegistry— default in-memory registryIEventSubscriptionResolver— extensibility point for database- or remote-backed resolversEventDispatcher— middleware that queries resolvers and invokes matched handlersEventFilter/EventFilterBuilder— composableFilterExpressionfactory for envelope and data-payload filtering
dotnet add package Hermodr.Subscriptions
Hermodr.Publisher.OpenTelemetry
Adds OpenTelemetry instrumentation to the event publishing pipeline. Creates producer and consumer Activity spans, injects W3C traceparent/tracestate as CloudEvents extension attributes on publish, and extracts them on the subscription side to enable end-to-end distributed tracing across service boundaries.
dotnet add package Hermodr.Publisher.OpenTelemetry
See OpenTelemetry Instrumentation for the full guide.
Hermodr.Schema
Core schema model. Includes EventSchema, EventSchemaBuilder (fluent API), EventSchemaCreator (reflection-based), IEventSchemaFactory, IEventSchemaWriter, and IEventSchemaValidator.
dotnet add package Hermodr.Schema
Hermodr.Schema.Yaml
Adds EventSchemaYamlWriter, which serialises an IEventSchema to a YAML stream using YamlDotNet.
dotnet add package Hermodr.Schema.Yaml
Hermodr.Schema.AsyncApi
Exports single or multiple event schemas as a complete AsyncAPI 2.x document (JSON or YAML).
dotnet add package Hermodr.Schema.AsyncApi
Hermodr.TestPublisher
An in-memory publish channel for use in unit and integration tests. Invokes a user-supplied callback whenever an event is published, so you can assert on published events without a real transport.
dotnet add package Hermodr.TestPublisher