/// <summary> /// Dependency inject a message publisher to the service collection /// </summary> /// <param name="services">The service collection</param> /// <param name="connectionUri">The uri connection string</param> public static void AddMessagePublisher(this IServiceCollection services, string connectionUri) { var connection = new RabbitConnectionFactory(connectionUri); services.AddSingleton(connection); services.AddScoped <IMessageQueuePublisher, RabbitQueuePublisher>(); }
public RabbitQueueReader( IServiceProvider serviceProvider, RabbitConnectionFactory connection, QueueName queueName, MessageHandlerRepository messageHandlerRepository ) { _serviceProvider = serviceProvider; _connection = connection; _queueName = queueName; _messageHandlerRepository = messageHandlerRepository; }
/// <summary> /// Dependency inject a message consumer to the service collection /// </summary> /// <param name="services">The service collection</param> /// <param name="connectionUri">The uri connection string</param> /// <param name="queueName">The name of the queue</param> /// <param name="builderFn">The message builder</param> public static void AddMessageConsumer(this IServiceCollection services, string connectionUri, string queueName, Action <MessagingBuilder> builderFn = null) { var builder = new MessagingBuilder(services); services.AddHostedService <RabbitQueueReader>(); services.AddSingleton(new MessageHandlerRepository(builder.MessageHandlers)); builderFn?.Invoke(builder); var queueNameService = new QueueName(queueName); services.AddSingleton(queueNameService); var connection = new RabbitConnectionFactory(connectionUri); services.AddSingleton(connection); }
public RabbitQueuePublisher(RabbitConnectionFactory connection) { _connection = connection; }