Joselct.Communication.Contracts
1.0.4
dotnet add package Joselct.Communication.Contracts --version 1.0.4
NuGet\Install-Package Joselct.Communication.Contracts -Version 1.0.4
<PackageReference Include="Joselct.Communication.Contracts" Version="1.0.4" />
<PackageVersion Include="Joselct.Communication.Contracts" Version="1.0.4" />
<PackageReference Include="Joselct.Communication.Contracts" />
paket add Joselct.Communication.Contracts --version 1.0.4
#r "nuget: Joselct.Communication.Contracts, 1.0.4"
#:package Joselct.Communication.Contracts@1.0.4
#addin nuget:?package=Joselct.Communication.Contracts&version=1.0.4
#tool nuget:?package=Joselct.Communication.Contracts&version=1.0.4
Joselct.Communication.Contracts
Core contracts for the Joselct.Communication library.
Reference this package when you need to share integration message types across multiple projects without pulling in the full RabbitMQ implementation.
Installation
dotnet add package Joselct.Communication.Contracts
What's Included
IntegrationMessage
Base record for all messages exchanged between microservices:
public abstract record IntegrationMessage
{
public Guid Id { get; init; }
public DateTimeOffset CreatedAt { get; init; }
public string? CorrelationId { get; init; }
public string? Source { get; init; }
}
Define your integration events by inheriting from it:
public record OrderCreatedIntegrationEvent(
Guid OrderId,
string CustomerEmail,
decimal Total
) : IntegrationMessage;
IExternalPublisher
Publishes messages to the broker:
public interface IExternalPublisher
{
Task PublishAsync<T>(
T message,
string? destination = null,
bool declareDestination = false,
CancellationToken ct = default
) where T : IntegrationMessage;
}
IIntegrationMessageConsumer<T>
Handles received messages:
public interface IIntegrationMessageConsumer<T> where T : IntegrationMessage
{
Task HandleAsync(T message, CancellationToken ct = default);
}
Usage
Defining integration events
// Shared between microservices — only needs Contracts package
public record OrderCreatedIntegrationEvent(
Guid OrderId,
string CustomerEmail
) : IntegrationMessage;
Implementing a consumer
public class OrderCreatedConsumer : IIntegrationMessageConsumer<OrderCreatedIntegrationEvent>
{
public async Task HandleAsync(OrderCreatedIntegrationEvent message, CancellationToken ct)
{
// process the event
}
}
Related Packages
- Joselct.Communication.RabbitMQ — RabbitMQ implementation
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Joselct.Communication.Contracts:
| Package | Downloads |
|---|---|
|
Joselct.Communication.RabbitMQ
RabbitMQ implementation for Joselct.Communication with OpenTelemetry support and persistent connections. |
GitHub repositories
This package is not used by any popular GitHub repositories.