Skip to main content

Renamed: This project was formerly called Deveel Events. As of 23 May 2026, the NuGet packages have been renamed from Deveel.Events.* to Hermodr.*. 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

PackageDescription
Hermodr.AnnotationsAttributes for describing event metadata on your data classes
Hermodr.PublisherCore publisher infrastructure (EventPublisher, EventPublisherBuilder, DI helpers)

Channel packages

PackageDescription
Hermodr.Publisher.AzureServiceBusPublish events to an Azure Service Bus queue or topic
Hermodr.Publisher.RabbitMqPublish events to a RabbitMQ exchange
Hermodr.Publisher.MassTransitPublish events through a MassTransit bus
Hermodr.Publisher.WebhookDeliver events to HTTP webhook endpoints
Hermodr.Publisher.OutboxPersist events to a transactional outbox for later relay
Hermodr.Publisher.Outbox.EntityFrameworkEntity Framework Core repository and helpers for the outbox channel
Hermodr.Amqp.AnnotationsAMQP-specific attributes (exchange name, routing key)

Subscriptions package

PackageDescription
Hermodr.SubscriptionsIn-process event subscription registry and dispatcher

Observability package

PackageDescription
Hermodr.Publisher.OpenTelemetryDistributed tracing with W3C trace context propagation via CloudEvents extensions

Audit Trail packages

PackageDescription
Hermodr.AuditTrailCore contracts for an append-only audit trail (IAuditTrailWriter, IAuditTrailReader<T>, AuditTrailBuilder, AuditTrailStreamQuery)
Hermodr.Publisher.AuditTrailPublisher integration: AuditTrailPublishChannel and AddAuditTrail() extension method
Hermodr.AuditTrail.InMemoryIn-memory storage backend for testing and development
Hermodr.AuditTrail.EntityFrameworkEntity Framework Core storage backend (SQL Server, PostgreSQL, SQLite)
Hermodr.AuditTrail.NDJsonNDJson file storage backend with pluggable filesystem (Azure Blob, S3, local disk)

Schema packages

PackageDescription
Hermodr.SchemaCore schema model, fluent builder, JSON writer, and schema validation
Hermodr.Schema.YamlExport an event schema as a YAML document
Hermodr.Schema.AsyncApiExport schemas as an AsyncAPI 2.x document (JSON or YAML)

Test package

PackageDescription
Hermodr.TestPublisherIn-memory test channel and helpers for unit tests

Package Details

Hermodr.Annotations

NuGet GitHub pre-release

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

NuGet GitHub pre-release

The heart of the framework. Provides:

  • EventPublisher
  • IEventPublishChannel and IBatchEventPublishChannel
  • EventPublisherBuilder for fluent DI registration
  • IEventFactory, IEventIdGenerator, and IEventSystemTime extensibility points
  • EventPublisherOptions for global defaults
  • named publisher pipelines resolved through keyed DI
dotnet add package Hermodr.Publisher

Hermodr.Publisher.AzureServiceBus

NuGet GitHub pre-release

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

NuGet GitHub pre-release

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

NuGet GitHub pre-release

Wraps MassTransit's IPublishEndpoint / ISendEndpointProvider so events can be routed through any MassTransit-supported transport.

dotnet add package Hermodr.Publisher.MassTransit

Hermodr.Publisher.Webhook

NuGet GitHub pre-release

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

NuGet GitHub pre-release

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

NuGet GitHub pre-release

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

NuGet GitHub pre-release

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

NuGet GitHub pre-release

Adds an in-process event subscription registry and dispatcher middleware to the EventPublisher pipeline. Includes:

  • IEventSubscription and EventSubscription — the subscription model
  • IEventSubscriptionRegistry — default in-memory registry
  • IEventSubscriptionResolver — extensibility point for database- or remote-backed resolvers
  • EventDispatcher — middleware that queries resolvers and invokes matched handlers
  • EventFilter / EventFilterBuilder — composable FilterExpression factory for envelope and data-payload filtering
dotnet add package Hermodr.Subscriptions

Hermodr.Publisher.OpenTelemetry

NuGet

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

NuGet GitHub pre-release

Core schema model. Includes EventSchema, EventSchemaBuilder (fluent API), EventSchemaCreator (reflection-based), IEventSchemaFactory, IEventSchemaWriter, and IEventSchemaValidator.

dotnet add package Hermodr.Schema

Hermodr.Schema.Yaml

NuGet GitHub pre-release

Adds EventSchemaYamlWriter, which serialises an IEventSchema to a YAML stream using YamlDotNet.

dotnet add package Hermodr.Schema.Yaml

Hermodr.Schema.AsyncApi

NuGet GitHub pre-release

Exports single or multiple event schemas as a complete AsyncAPI 2.x document (JSON or YAML).

dotnet add package Hermodr.Schema.AsyncApi

Hermodr.TestPublisher

NuGet

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

Hermodr.AuditTrail

NuGet GitHub pre-release

Core contracts for an append-only audit trail. Provides IAuditTrailWriter, IAuditTrailReader<TEntry>, AuditTrailEntry, AuditTrailStreamQuery, and the AuditTrailBuilder used by the publisher integration.

dotnet add package Hermodr.AuditTrail

Hermodr.Publisher.AuditTrail

NuGet GitHub pre-release

Publisher integration: AuditTrailPublishChannel and the AddAuditTrail() extension method. Use it together with one of the audit trail storage backends (Hermodr.AuditTrail.InMemory, Hermodr.AuditTrail.EntityFramework, or Hermodr.AuditTrail.NDJson).

dotnet add package Hermodr.Publisher.AuditTrail

Hermodr.AuditTrail.InMemory

NuGet GitHub pre-release

In-memory storage backend for the audit trail. Suitable for testing and development.

dotnet add package Hermodr.AuditTrail.InMemory

Hermodr.AuditTrail.EntityFramework

NuGet GitHub pre-release

Entity Framework Core storage backend for the audit trail. Supports SQL Server, PostgreSQL, and SQLite.

dotnet add package Hermodr.AuditTrail.EntityFramework

Hermodr.AuditTrail.NDJson

NuGet GitHub pre-release

Newline-delimited JSON (NDJSON) file storage backend for the audit trail, with automatic file rolling by size or time interval and retention policies. All I/O is performed through the IFileSystem abstraction from System.IO.Abstractions, so the local disk can be replaced with Azure Blob Storage, Amazon S3, or any other compatible filesystem by registering a different IFileSystem implementation. Reads are asynchronous and non-blocking: files are opened with FileShare.ReadWrite and streamed line-by-line, so a concurrent writer is never blocked and the full file content is never loaded into memory.

builder.Services.AddEventPublisher(o => o.Source = new Uri("https://example.com"))
.AddAuditTrail(audit => audit.UseNDJson(o =>
{
o.DirectoryPath = "./audit-trail";
o.MaxFileSizeBytes = 10 * 1024 * 1024;
o.RollInterval = TimeSpan.FromHours(1);
o.MaxFileCount = 100;
o.ReadBufferSize = 65_536; // optional: tune for large files
}));
dotnet add package Hermodr.AuditTrail.NDJson

See the Audit Trail with NDJson Files sample for a full walkthrough.