Skip to main content
Version: v1.5.0

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 store and helpers for the outbox channel
Hermodr.Publisher.DeliveryLogCore delivery log middleware and storage abstractions
Hermodr.Publisher.DeliveryLog.InMemoryIn-memory storage backend for delivery log records
Hermodr.Publisher.DeliveryLog.NDJsonNDJson rolling-file backend for delivery log records
Hermodr.Publisher.DeliveryLog.EntityFrameworkEntity Framework Core persistence for delivery log records
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)
Hermodr.Publisher.EventSchemaAutomatic schema validation middleware for the publish pipeline

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, the IOutboxMessageStore<TMessage> abstraction, 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 IOutboxMessageStore<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.Publisher.DeliveryLog​

NuGet GitHub pre-release

Core delivery log package. Provides the DeliveryLogMiddleware, IEventPublishDeliveryLog abstraction, and DeliveryLogBuilder for configuring pluggable storage backends.

dotnet add package Hermodr.Publisher.DeliveryLog

Hermodr.Publisher.DeliveryLog.InMemory​

NuGet GitHub pre-release

In-memory storage backend for the delivery log. All records are held in a thread-safe, volatile collection. Suitable for tests and local development, but records are lost on process restart.

dotnet add package Hermodr.Publisher.DeliveryLog.InMemory

Hermodr.Publisher.DeliveryLog.NDJson​

NuGet GitHub pre-release

Newline-delimited JSON (NDJSON) rolling-file backend for the delivery log. Appends each record as a JSON line to sequentially-named files with automatic file rolling by size or time interval and retention policies.

dotnet add package Hermodr.Publisher.DeliveryLog.NDJson

Hermodr.Publisher.DeliveryLog.EntityFramework​

NuGet GitHub pre-release

Entity Framework Core storage backend for the delivery log. Stores records in a relational database using Kista.EntityFramework.

dotnet add package Hermodr.Publisher.DeliveryLog.EntityFramework

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.


Hermodr.Publisher.EventSchema​

NuGet

Adds a middleware component that automatically validates every event's payload against its registered schema before dispatch. Supports format-agnostic validation (JSON, XML), version-aware schema lookup, and configurable behaviors for missing schemas and validation failures.

dotnet add package Hermodr.Publisher.EventSchema

See Schema Validation at Publish Time for the full guide.