Rymote.Synapse.Core 1.0.0

dotnet add package Rymote.Synapse.Core --version 1.0.0
                    
NuGet\Install-Package Rymote.Synapse.Core -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rymote.Synapse.Core" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rymote.Synapse.Core" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Rymote.Synapse.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rymote.Synapse.Core --version 1.0.0
                    
#r "nuget: Rymote.Synapse.Core, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rymote.Synapse.Core@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rymote.Synapse.Core&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Rymote.Synapse.Core&version=1.0.0
                    
Install as a Cake Tool

Rymote.Synapse.Core

Strongly-typed in-process event bus for .NET 10. Part of Rymote.Synapse.

Rymote.Synapse.Core provides:

  • An ISynapseBus you publish events to and subscribe handlers against.
  • Three handler registration styles: delegate, IEventHandler<TPayload> classes resolved from DI, and methods marked [SynapseHandler] discovered by assembly scan.
  • Per-message-type dispatch policy: Synchronous (handlers run on the publisher's task) or FireAndForget (handlers run on a per-subscription bounded channel reader).
  • Per-subscription failure handling with retry / dead-letter / drop / rethrow decisions and pluggable backoff policies.
  • Native .NET 10 observability via System.Diagnostics.ActivitySource (source Rymote.Synapse) and System.Diagnostics.Metrics.Meter (meter Rymote.Synapse).

AtLeastOnce dispatch requires Rymote.Synapse.Persistence.* (forthcoming). Clustered delivery requires Rymote.Synapse.Net and Rymote.Synapse.Cluster (forthcoming).

Quickstart

ServiceCollection services = new();
services.AddLogging();
services.AddScoped<OrderPlacedHandler>();

services.AddSynapse()
    .UseMessagePackSerialization()
    .ConfigureMessageType<OrderPlaced>(options => options.Dispatch = new DispatchPolicy.Synchronous())
    .AddHandler<OrderPlacedHandler>();

ServiceProvider provider = services.BuildServiceProvider();
provider.ActivateSynapse();

ISynapseBus bus = provider.GetRequiredService<ISynapseBus>();
await bus.PublishAsync(new OrderPlaced(orderId: Guid.NewGuid(), amount: 19.99m));

See the spec for the full architecture.

AtLeastOnce dispatch

AtLeastOnce requires a persistence provider — install Rymote.Synapse.Persistence.Memory (ephemeral) or Rymote.Synapse.Persistence.File (durable, forthcoming):

services.AddSynapse()
    .UseMessagePackSerialization()
    .UseMemoryPersistence()
    .ConfigureMessageType<PaymentCaptured>(typeOptions =>
        typeOptions.Dispatch = new DispatchPolicy.AtLeastOnce(
            MaxAttempts: 5,
            Backoff: BackoffPolicy.Exponential(TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(1)),
            DeadLetter: new DeadLetterDestination.Channel("payments.dlq")));

Failed messages are dead-lettered as typed DeadLetterEnvelope<TPayload> events on the same bus:

bus.Subscribe<DeadLetterEnvelope<PaymentCaptured>>((envelope, context, ct) =>
{
    logger.LogWarning(
        "Payment {Id} dead-lettered after {Attempts} attempts: {Error}",
        envelope.Payload.Original.Payload.PaymentId,
        envelope.Payload.Attempts,
        envelope.Payload.LastExceptionMessage);
    return Task.CompletedTask;
});

DLQ subscriptions default to FireAndForget dispatch to prevent recursive dead-lettering.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on Rymote.Synapse.Core:

Package Downloads
Rymote.Synapse.Serialization.MessagePack

MessagePack codec for Rymote.Synapse envelope and payload serialization.

Rymote.Synapse.Persistence.Memory

In-memory IMessageLog implementation for Rymote.Synapse AtLeastOnce dispatch.

Rymote.Synapse.Net

TCP+TLS and QUIC transports for Rymote.Synapse inter-node communication.

Rymote.Synapse.Cluster

Cross-node clustering for Rymote.Synapse: full-mesh peer connections, reconnect, subscription propagation, routing, AtLeastOnce across peers.

Rymote.Synapse.AspNetCore

ASP.NET Core integration for Rymote.Synapse: IHostedService lifecycle, health endpoint, HTTP-trigger publish endpoint.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 194 5/18/2026
0.1.0 108 5/17/2026