Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CI

on:
push:
branches: [ main, develop ]
branches: [ main ]
pull_request:
branches: [ main, develop ]
branches: [ main ]

jobs:
build-and-test:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ on:
push:
branches:
- main
pull_request:
branches: [ main ]

jobs:
release:
Expand Down
7 changes: 0 additions & 7 deletions UltraSpeedBus.Abstractions/Contexts/IConsumerContext.cs

This file was deleted.

13 changes: 0 additions & 13 deletions UltraSpeedBus.Abstractions/Contexts/IMessageContext.cs

This file was deleted.

7 changes: 0 additions & 7 deletions UltraSpeedBus.Abstractions/Contexts/ISendContext.cs

This file was deleted.

3 changes: 3 additions & 0 deletions UltraSpeedBus.Abstractions/Message/ICommand.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
namespace UltraSpeedBus.Abstractions.Message;

/// <summary>
/// Command message marker interface
/// </summary>
public interface ICommand : IMessage {}
7 changes: 7 additions & 0 deletions UltraSpeedBus.Abstractions/Message/ICommandHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace UltraSpeedBus.Abstractions.Message;

public interface ICommandHandler<TCommand>
where TCommand : ICommand
{
Task HandleAsync(TCommand command, CancellationToken cancellationToken);
}
6 changes: 0 additions & 6 deletions UltraSpeedBus.Abstractions/Message/ICorrelatedMessage.cs

This file was deleted.

3 changes: 3 additions & 0 deletions UltraSpeedBus.Abstractions/Message/IEvent.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
namespace UltraSpeedBus.Abstractions.Message;

/// <summary>
/// Event message marker interface
/// </summary>
public interface IEvent : IMessage {}
7 changes: 7 additions & 0 deletions UltraSpeedBus.Abstractions/Message/IEventHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace UltraSpeedBus.Abstractions.Message;

public interface IEventHandler<TEvent>
where TEvent : IEvent
{
Task HandleAsync(TEvent @event, CancellationToken cancellationToken);
}
42 changes: 7 additions & 35 deletions UltraSpeedBus.Abstractions/Message/IMessage.cs
Original file line number Diff line number Diff line change
@@ -1,42 +1,14 @@
namespace UltraSpeedBus.Abstractions.Message;

// Message base interface
public interface IMessage
{
/// <summary>
/// It will be used for Saga, Idempotency, etc.
/// </summary>
Guid MessageId { get; }
DateTime Timestamp { get; }

}

// Pipelines and middlewares
public interface IMessageMiddleware
{
}

public interface IPublishPipeline
{
}

public interface IConsumerPipeline
{
}

// Policies and erros
public interface IErrorHandler
{
}

public interface IRetryPolicy
{
}

public interface IExceptionFilter
{

}

// Telemetry - it will be integrated with OpenTelemetry
public interface ITracerAdapter
{

/// <summary>
/// It will be used for logging, tracing, etc.
/// </summary>
DateTime Timestamp { get; }
}
3 changes: 3 additions & 0 deletions UltraSpeedBus.Abstractions/Message/IQuery.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace UltraSpeedBus.Abstractions.Message;

public interface IQuery<TResult> : IMessage {}
7 changes: 7 additions & 0 deletions UltraSpeedBus.Abstractions/Message/IQueryHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace UltraSpeedBus.Abstractions.Message;

public interface IQueryHandler<TQuery, TResult>
where TQuery : IQuery<TResult>
{
Task HandleAsync(TQuery query, CancellationToken cancellationToken);
}
6 changes: 0 additions & 6 deletions UltraSpeedBus.Abstractions/Message/IScheduledMessage.cs

This file was deleted.

18 changes: 0 additions & 18 deletions UltraSpeedBus.Abstractions/Message/MessageEnvelope.cs

This file was deleted.

5 changes: 0 additions & 5 deletions UltraSpeedBus.Abstractions/Sagas/ISagaContext.cs

This file was deleted.

5 changes: 0 additions & 5 deletions UltraSpeedBus.Abstractions/Sagas/ISagaRepository.cs

This file was deleted.

6 changes: 0 additions & 6 deletions UltraSpeedBus.Abstractions/Sagas/ISagaState.cs

This file was deleted.

10 changes: 0 additions & 10 deletions UltraSpeedBus.Abstractions/Serializer/IMessageSerializer.cs

This file was deleted.

29 changes: 0 additions & 29 deletions UltraSpeedBus.Abstractions/Transport/ConsumerTransportContext.cs

This file was deleted.

7 changes: 7 additions & 0 deletions UltraSpeedBus.Abstractions/Transport/ITransport.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace UltraSpeedBus.Abstractions.Message;

public interface ITransport
{
ITransportProducer CreateProducer();
ITransportConsumer CreateConsumer(string queueOrTopic);
}
22 changes: 19 additions & 3 deletions UltraSpeedBus.Abstractions/Transport/ITransportConsumer.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
namespace UltraSpeedBus.Abstractions.Transport;
namespace UltraSpeedBus.Abstractions.Message;

/// <summary>
/// Represents a transport-agnostic consumer interface that supports multiple message consumption patterns:
/// - Long polling (e.g., AWS SQS)
/// - Push-based delivery (e.g., Azure Service Bus)
/// - Subscription streaming (e.g., Apache Kafka)
/// - Polling loop (e.g., Redis Streams)
/// </summary>
public interface ITransportConsumer : IAsyncDisposable
{
Task StartAsync(Func<ConsumerTransportContext, Task> onMessage, CancellationToken cancellationToken = default);
Task StopAsync(CancellationToken cancellationToken = default);
Task InitializeAsync(CancellationToken cancellationToken = default);

Task StartConsumingAsync(
Func<ConsumerTransportContext, Task> handler,
CancellationToken cancellationToken = default);

Task StopConsumingAsync(CancellationToken cancellationToken = default);
}

public class ConsumerTransportContext
{
}
22 changes: 15 additions & 7 deletions UltraSpeedBus.Abstractions/Transport/ITransportProducer.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
using UltraSpeedBus.Abstractions.Message;
namespace UltraSpeedBus.Abstractions.Message;

namespace UltraSpeedBus.Abstractions.Transport;
public class MessageEnvelope
{
public Guid MessageId { get; init; }
public string MessageType { get; init; } = null!;
public byte[] Payload { get; init; } = null!;
}

/// <summary>
/// Defines a transport producer capable of sending and publishing messages.
/// it will be used for Azure Service Bus, AWS, RabbitMQ fanout, SQS, Redis Streams, etc.
/// </summary>
public interface ITransportProducer : IAsyncDisposable
{
Task StartAsync(CancellationToken cancellationToken = default);
Task StopAsync(CancellationToken cancellationToken = default);
Task InitializeAsync(CancellationToken cancellationToken = default);

Task SendAsync(MessageEnvelope envolope, CancellationToken cancellationToken = default);
Task PublishAsync(MessageEnvelope envolope, CancellationToken cancellationToken = default);
}
Task SendAsync(string queue, MessageEnvelope envelop, CancellationToken cancellationToken = default);
Task PublishAsync(string topic, MessageEnvelope envelop, CancellationToken cancellationToken = default);
}
8 changes: 0 additions & 8 deletions UltraSpeedBus.Abstractions/Transport/ITransportTopology.cs

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Binary file not shown.
Loading