Skip to content
This repository was archived by the owner on Apr 29, 2022. It is now read-only.

Commit c23ee2f

Browse files
Merge pull request #24 from AntonyVorontsov/feature/message-handler-ordering
Added message handler ordering.
2 parents 75f1901 + e04e01b commit c23ee2f

36 files changed

+1242
-246
lines changed

examples/Examples.ConsumerConsole/CustomAsyncMessageHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public CustomAsyncMessageHandler(ILogger<CustomAsyncMessageHandler> logger)
1515

1616
public async Task Handle(string message, string routingKey)
1717
{
18-
_logger.LogInformation($"A weird example of running something async with message {message}.");
18+
_logger.LogInformation($"A weird example of running something async with message {message} that has been received by {routingKey}.");
1919
await Task.CompletedTask.ConfigureAwait(false);
2020
}
2121
}

examples/Examples.ConsumerHost/CustomMessageHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public CustomMessageHandler(ILogger<CustomMessageHandler> logger)
1313

1414
public void Handle(string message, string routingKey)
1515
{
16-
_logger.LogInformation("Handling messages");
16+
_logger.LogInformation($"Handling message {message} by routing key {routingKey}");
1717
}
1818
}
1919
}

examples/Examples.Producer/Message.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ public class Message
77
public string Name { get; set; }
88

99
public bool Flag { get; set; }
10+
11+
public int Index { get; set; }
1012

1113
public IEnumerable<int> Numbers { get; set; }
1214
}

examples/Examples.Producer/Program.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,17 @@ public static async Task Main()
1616
var serviceProvider = serviceCollection.BuildServiceProvider();
1717
var queueService = serviceProvider.GetRequiredService<IQueueService>();
1818

19-
var message = new Message
19+
for (var i = 0; i < 10; i++)
2020
{
21-
Name = "Custom message",
22-
Flag = true,
23-
Numbers = new[] { 1, 2, 3 }
24-
};
25-
await queueService.SendAsync(message, "exchange.name", "routing.key");
21+
var message = new Message
22+
{
23+
Name = "Custom message",
24+
Flag = true,
25+
Index = i,
26+
Numbers = new[] { 1, 2, 3 }
27+
};
28+
await queueService.SendAsync(message, "exchange.name", "routing.key");
29+
}
2630
}
2731

2832
static void ConfigureServices(IServiceCollection services)

readme.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,6 @@ Exchange sections define how to bind queues and exchanges with each other using
175175

176176
For more information about `appsettings.json` and manual configuration features, see [rabbit-configuration](./docs/rabbit-configuration.md) and [exchange-configuration](./docs/exchange-configuration.md) documentation files.
177177

178-
## Versioning
179-
180-
For now this project uses semantic versioning that follows .Net Core versioning. That means that major and minor versions are equal to .Net Core major and minor versions but patch versions will be used independently.
181-
182178
## Changelog
183179

184180
All notable changes are being tracked in the [changelog](./docs/changelog.md) file.

src/RabbitMQ.Client.Core.DependencyInjection/IAsyncMessageHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace RabbitMQ.Client.Core.DependencyInjection
55
/// <summary>
66
/// Interface of asynchronous message handler.
77
/// </summary>
8-
public interface IAsyncMessageHandler
8+
public interface IAsyncMessageHandler : IBaseMessageHandler
99
{
1010
/// <summary>
1111
/// Handle message from a queue.

src/RabbitMQ.Client.Core.DependencyInjection/IAsyncNonCyclicMessageHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace RabbitMQ.Client.Core.DependencyInjection
55
/// <summary>
66
/// Interface of a non-cycling async message handler.
77
/// </summary>
8-
public interface IAsyncNonCyclicMessageHandler
8+
public interface IAsyncNonCyclicMessageHandler : IBaseMessageHandler
99
{
1010
/// <summary>
1111
/// Handle message from a queue.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace RabbitMQ.Client.Core.DependencyInjection
2+
{
3+
/// <summary>
4+
/// A base interface that unites all message handlers.
5+
/// </summary>
6+
public interface IBaseMessageHandler
7+
{
8+
}
9+
}

src/RabbitMQ.Client.Core.DependencyInjection/IMessageHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/// <summary>
44
/// Interface of message handler.
55
/// </summary>
6-
public interface IMessageHandler
6+
public interface IMessageHandler : IBaseMessageHandler
77
{
88
/// <summary>
99
/// Handle message from a queue.

src/RabbitMQ.Client.Core.DependencyInjection/IMessageHandlingService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Threading.Tasks;
12
using RabbitMQ.Client.Events;
23

34
namespace RabbitMQ.Client.Core.DependencyInjection
@@ -12,6 +13,6 @@ public interface IMessageHandlingService
1213
/// </summary>
1314
/// <param name="eventArgs">Arguments of message receiving event.</param>
1415
/// <param name="queueService">An instance of the queue service <see cref="IQueueService"/>.</param>
15-
void HandleMessageReceivingEvent(BasicDeliverEventArgs eventArgs, IQueueService queueService);
16+
Task HandleMessageReceivingEvent(BasicDeliverEventArgs eventArgs, IQueueService queueService);
1617
}
1718
}

0 commit comments

Comments
 (0)