public PrepareMessageContextForPublish( ISerializer serializer, RabbitMqBusConfiguration busConfiguration) { _serializer = serializer; _busConfiguration = busConfiguration; }
public static IServiceBus Create( Action <IMassInstanceBusFactoryConfigurator> configure, IMassInstanceConsumerFactory consumerFactory) { var topologyConfiguration = new RabbitMqTopologyConfiguration(MessageTopology); var busConfiguration = new RabbitMqBusConfiguration(topologyConfiguration); var busEndpointConfiguration = busConfiguration.CreateEndpointConfiguration(); var sagaMessageExtractor = new SagaMessageExtractor(); var configurator = new MassInstanceBusFactoryConfigurator( busConfiguration, busEndpointConfiguration, consumerFactory, sagaMessageExtractor); configure(configurator); var result = BusConfigurationResult.CompileResults(configurator.Validate()); try { return(configurator.CreateBus()); } catch (Exception ex) { throw new ConfigurationException(result, "An exception occurred during bus creation", ex); } }
private async Task StartClient() { var config = new RabbitMqBusConfiguration(ConnectionString, RoutingKey, Headers); var client = await _messageReceiverClientFactory.GetReceiverAsync(config); client.StartClient(); }
protected override async ValueTask <IActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext context) { var config = new RabbitMqBusConfiguration(ConnectionString, RoutingKey, Headers); var client = await _messageSenderClientFactory.GetSenderAsync(config); await client.PublishMessage(Message); return(Done()); }
/// <summary> /// Configure and create a bus for RabbitMQ /// </summary> /// <param name="configure">The configuration callback to configure the bus</param> /// <returns></returns> public static IBusControl Create(Action <IRabbitMqBusFactoryConfigurator> configure = null) { var topologyConfiguration = new RabbitMqTopologyConfiguration(MessageTopology); var busConfiguration = new RabbitMqBusConfiguration(topologyConfiguration); var configurator = new RabbitMqBusFactoryConfigurator(busConfiguration); configure?.Invoke(configurator); return(configurator.Build()); }
/// <summary> /// Configure and create a bus for RabbitMQ /// </summary> /// <param name="configure">The configuration callback to configure the bus</param> /// <returns></returns> public static IBusControl Create(Action <IRabbitMqBusFactoryConfigurator> configure) { var topologyConfiguration = new RabbitMqTopologyConfiguration(MessageTopology); var busConfiguration = new RabbitMqBusConfiguration(topologyConfiguration); var busEndpointConfiguration = busConfiguration.CreateEndpointConfiguration(); var configurator = new RabbitMqBusFactoryConfigurator(busConfiguration, busEndpointConfiguration); configure(configurator); return(configurator.Build()); }
public RabbitMqConnection(RabbitMqBusConfiguration busConfiguration, ILogger <RabbitMqConnection> logger) { _logger = logger; _busConfiguration = busConfiguration; //setup connection and channels _factory = new ConnectionFactory { Uri = new Uri(busConfiguration.ConnectionString), AutomaticRecoveryEnabled = true //wanted this to be explicit. }; SetupGlobalExchanges(); }
public static RabbitMqHostSettings ToRabbitMqHostSettings(this RabbitMqBusConfiguration configuration) { var hostConfiguration = new RabbitMqHostConfigurator(configuration.Host, configuration.VirtualHost, (ushort)configuration.Port) { PublisherConfirmation = true }; if (!string.IsNullOrEmpty(configuration.Username)) { hostConfiguration.Username(configuration.Username); } if (!string.IsNullOrEmpty(configuration.Password)) { hostConfiguration.Password(configuration.Password); } if (configuration.UseSsl) { hostConfiguration.UseSsl((x) => { x.Protocol = System.Security.Authentication.SslProtocols.Tls12; }); } return(hostConfiguration.Settings); }
private static void RegisterBus(IServiceCollection serviceCollection, IServiceProvider serviceProvider) { var busConfiguration = RabbitMqBusConfiguration.Parse(serviceBusConnectionString); var provisionUserWithSingleGroupSaga = new ProvisionUserWithSingleGroupSaga(); var provisionUserWithMultipleGroupsSaga = new ProvisionUserWithMultipleGroupsSaga(); var provisionUserWithApprovalSaga = new ProvisionUserWithApprovalSaga(); var bus = Bus.Factory.CreateUsingRabbitMq(sbc => { var host = sbc.Host(busConfiguration.ToRabbitMqHostSettings()); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.ProvisionUserWithSingleGroupService, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.StateMachineSaga(provisionUserWithSingleGroupSaga, new MongoDbSagaRepository <ProvisionUserWithSingleGroupSagaState>(mongoDbConnectionString, "SagaToServerless", Constants.CollectionNames.ProvisionUserWithSingleGroupSagas)); }); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.ProvisionUserWithMultipleGroupsService, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.StateMachineSaga(provisionUserWithMultipleGroupsSaga, new MongoDbSagaRepository <ProvisionUserWithMultipleGroupsSagaState>(mongoDbConnectionString, "SagaToServerless", Constants.CollectionNames.ProvisionUserWithMultipleGroupSagas)); }); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.ProvisionUserWithApprovalService, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.StateMachineSaga(provisionUserWithApprovalSaga, new MongoDbSagaRepository <ProvisionUserWithApprovalSagaState>(mongoDbConnectionString, "SagaToServerless", Constants.CollectionNames.ProvisionUserWithApprovalSagas)); }); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.UsersHandlerQueue, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.Consumer(() => new UsersHandler(serviceProvider.GetRequiredService <IUserService>())); }); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.GroupsHandlerQueue, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.Consumer(() => new GroupsHandler(serviceProvider.GetRequiredService <IGroupService>())); }); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.NotificationsHandlerQueue, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.Consumer(() => new NotificationsHandler(serviceProvider.GetRequiredService <ISendGridService>())); }); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.ProvisionUserHandlerQueue, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.Consumer(() => new ProvisionUserHandler()); }); sbc.ReceiveEndpoint(host, Constants.SagaPattern.QueueNames.ApprovalHandlerQueue, configurator => { configurator.UseRetry(retryConfigurator => retryConfigurator.Incremental(3, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10))); configurator.Consumer(() => new ApprovalHandler()); }); }); bus.Start(); serviceCollection.AddSingleton <IBus>(bus); serviceCollection.AddSingleton <IBusControl>(bus); serviceProvider = serviceCollection.BuildServiceProvider(); }
public Client(RabbitMqBusConfiguration configuration) { Configuration = configuration; _activator = new BuiltinHandlerActivator(); }
public RabbitMq() { BusConfiguration = new RabbitMqBusConfiguration(); Factory = new RabbitMqTransportFactory(); }