public RabbitMQBus(Action <IBusConfigurator> busConfigurator = null) { BusConfigurator busConfiguration = new BusConfigurator(); if (busConfigurator != null) { busConfigurator(busConfiguration); } BusId = busConfiguration.BusId; _exchange = "amq.headers"; string username = "******"; string password = "******"; if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Endpoint)) { _exchange = busConfiguration.ConnectionString.Endpoint; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Username)) { username = busConfiguration.ConnectionString.Username; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Password)) { password = busConfiguration.ConnectionString.Password; } ConnectionFactory factory = new ConnectionFactory { HostName = busConfiguration.ConnectionString.Host, Port = busConfiguration.ConnectionString.Port, AutomaticRecoveryEnabled = true, TopologyRecoveryEnabled = true, UserName = username, Password = password, VirtualHost = busConfiguration.ConnectionString.VirtualHost }; _connection = factory.CreateConnection(); _createSubscriberConfigurator = configure => { SubscriberConfigurator configurator = new SubscriberConfigurator(_exchange, busConfiguration.ErrorSubscriber, busConfiguration.ReceiveSelfPublish); if (configure != null) { configure(configurator); } return(configurator); }; _createPublisherConfigurator = configure => { PublisherConfigurator configurator = new PublisherConfigurator(_exchange, busConfiguration.ErrorHandler); if (configure != null) { configure(configurator); } return(configurator); }; }
public RabbitMQBus(Action <IBusConfigurator> busConfigurator = null) { BusConfigurator busConfiguration = new BusConfigurator(); if (busConfigurator != null) { busConfigurator(busConfiguration); } BusId = busConfiguration.BusId; BusConnectionName = busConfiguration.ConnectionProvidedName; _exchange = "amq.headers"; string username = "******"; string password = "******"; if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Endpoint)) { _exchange = busConfiguration.ConnectionString.Endpoint; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Username)) { username = busConfiguration.ConnectionString.Username; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Password)) { password = busConfiguration.ConnectionString.Password; } ConnectionFactory factory = new ConnectionFactory { HostName = busConfiguration.ConnectionString.Host, Port = busConfiguration.ConnectionString.Port, AutomaticRecoveryEnabled = true, TopologyRecoveryEnabled = true, UserName = username, Password = password, VirtualHost = busConfiguration.ConnectionString.VirtualHost, DispatchConsumersAsync = true }; _connection = factory.CreateConnection(busConfiguration.ConnectionProvidedName); _connection.ConnectionBlocked += (sender, args) => { busConfiguration.ConnectionBlocked(args.Reason); }; _connection.ConnectionUnblocked += (sender, args) => { busConfiguration.ConnectionUnblocked(); }; _createSubscriberConfigurator = configure => { SubscriberConfigurator configurator = new SubscriberConfigurator(_exchange, busConfiguration.ReplyExchange, busConfiguration.ErrorSubscriber, busConfiguration.ReceiveSelfPublish, busConfiguration.Trace, () => busConfiguration.Blocked); if (configure != null) { configure(configurator); } return(configurator); }; _createPublisherConfigurator = configure => { PublisherConfigurator configurator = new PublisherConfigurator(_exchange, busConfiguration.ErrorHandler, busConfiguration.Trace, () => busConfiguration.Blocked); if (configure != null) { configure(configurator); } return(configurator); }; _createRpcPublisherConfigurator = configure => { RpcPublisherConfigurator configurator = new RpcPublisherConfigurator(_exchange, busConfiguration.UseFastReply, busConfiguration.ReplyExchange, busConfiguration.ErrorHandler, busConfiguration.Trace, () => busConfiguration.Blocked); if (configure != null) { configure(configurator); } return(configurator); }; }