optimise codes

master
Young 6 months ago
parent 083f7759f2
commit a66d546d43

@ -21,21 +21,21 @@ public class RabbitMQEventBus : IEventBus
private readonly ILogger<RabbitMQEventBus> _logger;
private IModel _consumerChannel;
private IModel? _consumerChannel;
public RabbitMQEventBus(
IPersistentConnection persistentConnection,
IEventBusSubscriptionManager subscriptionsManager,
IServiceProvider serviceProvider,
ILogger<RabbitMQEventBus> logger,
string exchangeName,
string brokerName,
string queueName)
{
_persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
_subscriptionsManager = subscriptionsManager ?? throw new ArgumentNullException(nameof(subscriptionsManager));
_serviceProvider = serviceProvider;
_logger = logger;
_exchangeName = exchangeName ?? throw new ArgumentNullException(nameof(exchangeName));
_exchangeName = brokerName ?? throw new ArgumentNullException(nameof(brokerName));
_queueName = queueName ?? throw new ArgumentNullException(nameof(queueName));
ConfigureMessageBroker();
@ -68,7 +68,7 @@ public class RabbitMQEventBus : IEventBus
using var channel = _persistentConnection.CreateModel();
_logger.LogTrace("Declaring RabbitMQ exchange to publish event #{EventId}...", @event.Id);
channel.ExchangeDeclare(exchange: _exchangeName, type: "direct");
channel.ExchangeDeclare(_exchangeName, ExchangeType.Direct);
var message = JsonSerializer.Serialize(@event);
var body = Encoding.UTF8.GetBytes(message);
@ -80,13 +80,7 @@ public class RabbitMQEventBus : IEventBus
_logger.LogTrace("Publishing event to RabbitMQ with ID #{EventId}...", @event.Id);
channel.BasicPublish(
exchange: _exchangeName,
routingKey: eventName,
mandatory: true,
basicProperties: properties,
body: body);
channel.BasicPublish(_exchangeName, eventName, true, properties, body);
_logger.LogTrace("Published event with ID #{EventId}.", @event.Id);
});
}
@ -243,8 +237,8 @@ public class RabbitMQEventBus : IEventBus
var @event = JsonSerializer.Deserialize(message, eventType);
var eventHandlerType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType);
await Task.Yield();
await ((Task)eventHandlerType.GetMethod(nameof(IIntegrationEventHandler<IntegrationEvent>.HandleAsync))
.Invoke(handler, [@event]))!;
await (Task)eventHandlerType.GetMethod(nameof(IIntegrationEventHandler<IntegrationEvent>.HandleAsync))
.Invoke(handler, [@event]);
}
_logger.LogTrace("Processed event {EventName}.", eventName);

@ -43,8 +43,10 @@ public static class ServiceCollectionExtensions
return services;
}
public static void SubscribeEvent<TEvent, TEvenHandler>(this IServiceProvider services)
where TEvent : IntegrationEvent where TEvenHandler : IIntegrationEventHandler<TEvent>
public static void SubscribeEvent<TEvent, TEvenHandler>
(this IServiceProvider services)
where TEvent : IntegrationEvent
where TEvenHandler : IIntegrationEventHandler<TEvent>
{
ArgumentNullException.ThrowIfNull(services);
var eventBus = services.GetRequiredService<IEventBus>();

Loading…
Cancel
Save