Raycynix.Extensions.Messaging.Abstractions
3.0.0
dotnet add package Raycynix.Extensions.Messaging.Abstractions --version 3.0.0
NuGet\Install-Package Raycynix.Extensions.Messaging.Abstractions -Version 3.0.0
<PackageReference Include="Raycynix.Extensions.Messaging.Abstractions" Version="3.0.0" />
<PackageVersion Include="Raycynix.Extensions.Messaging.Abstractions" Version="3.0.0" />
<PackageReference Include="Raycynix.Extensions.Messaging.Abstractions" />
paket add Raycynix.Extensions.Messaging.Abstractions --version 3.0.0
#r "nuget: Raycynix.Extensions.Messaging.Abstractions, 3.0.0"
#:package Raycynix.Extensions.Messaging.Abstractions@3.0.0
#addin nuget:?package=Raycynix.Extensions.Messaging.Abstractions&version=3.0.0
#tool nuget:?package=Raycynix.Extensions.Messaging.Abstractions&version=3.0.0
Raycynix.Extensions.Messaging.Abstractions
Raycynix.Extensions.Messaging.Abstractions contains the transport-neutral contracts used by Raycynix messaging packages.
What it contains
MessageFormatMessageContentTypesMessageEnvelope<TMessage>SerializedMessageIMessageCodecIMessageCodecResolverIMessageEnvelopeFactoryIMessagePublisherIMessageHandler<TMessage>IRequestClientIRequestEnvelopeFactoryRequestEnvelope<TRequest>ResponseEnvelope<TResponse>- transport-neutral contracts for publishers, handlers, codecs, and envelopes
What it does not contain
- DI registration
- JSON serializer implementation
- gRPC serializer implementation
- Kafka producer implementation
- RabbitMQ publisher implementation
- hosted services
Logging
This package contains contracts, attributes, models, and shared configuration-facing abstractions only. Runtime diagnostics belong to implementation and transport packages, so this package does not add runtime logging behavior.
Usage
Declare a message contract:
[MessageContract("orders.created", "1.0.0")]
public sealed record OrderCreatedMessage(string OrderId);
Implement a handler contract:
public sealed class OrderCreatedHandler : IMessageHandler<OrderCreatedMessage>
{
public ValueTask HandleAsync(
MessageEnvelope<OrderCreatedMessage> envelope,
CancellationToken cancellationToken = default)
{
Console.WriteLine(envelope.Message.OrderId);
return ValueTask.CompletedTask;
}
}
Define a direct request contract:
public sealed record GetOrderRequest(string OrderId);
public sealed record GetOrderResponse(string OrderId, string Status);
Use the unified incoming dispatcher contract:
public sealed class IncomingProcessor(IMessageDispatcher dispatcher)
{
public ValueTask<MessageDispatchResult> ProcessAsync(
MessageEnvelope<OrderCreatedMessage> envelope,
CancellationToken cancellationToken)
{
return dispatcher.DispatchAsync(envelope, cancellationToken);
}
}
Implement a custom codec:
public sealed class CustomBinaryCodec : IMessageCodec
{
public MessageFormat Format => MessageFormat.Grpc;
public string ContentType => "application/x-custom-binary";
public bool CanHandle(Type messageType) => messageType == typeof(MyMessage);
public byte[] Serialize(object message, Type messageType) => ((MyMessage)message).ToByteArray();
public object Deserialize(ReadOnlyMemory<byte> payload, Type messageType) => MyMessage.Parser.ParseFrom(payload.Span);
}
Implement a custom direct client abstraction:
public sealed class OrdersClient(IRequestClient requestClient)
{
public async Task<GetOrderResponse> GetAsync(
RequestEnvelope<GetOrderRequest> request,
CancellationToken cancellationToken)
{
var response = await requestClient.SendAsync<GetOrderRequest, GetOrderResponse>(
request,
cancellationToken);
return response.Response;
}
}
Migrating From 2.x
Version 3.0 targets .NET 10 and depends on the 3.0 Contracts and Security abstractions. Update the messaging package family together; the transport-neutral APIs remain compatible.
| Product | Versions 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. |
-
net10.0
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.10)
- Raycynix.Extensions.Contracts (>= 3.0.0)
- Raycynix.Extensions.Security.Abstractions (>= 3.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Raycynix.Extensions.Messaging.Abstractions:
| Package | Downloads |
|---|---|
|
Raycynix.Extensions.Messaging
Transport-agnostic messaging, dispatch, direct requests, standard .NET metrics instrumentation, scoped envelopes, and outbox/inbox reliability foundations. |
GitHub repositories
This package is not used by any popular GitHub repositories.
v3.0.0 aligns the transport-neutral messaging contracts with the net10.0 Contracts, Security, and Messaging 3.0 package line.