public IBusControl Create() { var busControl = _messageBusFactory.Create(); var retryCount = 0; var retryLimit = _rabbitMqHostConfiguration.RetryLimit; var delayInSecondsBetweenRetries = _rabbitMqHostConfiguration.DelayInSecondsBetweenRetries; var started = false; while (retryCount < retryLimit && !started) { try { _logger.Info("Starting bus..."); busControl.Start(); started = true; } catch (MassTransit.RabbitMqTransport.RabbitMqConnectionException) { _logger.Error( $"Failed to connect (attempt {retryCount + 1} of {retryLimit}). Will try again in {delayInSecondsBetweenRetries} seconds."); Thread.Sleep(delayInSecondsBetweenRetries * 1000); retryCount++; busControl = _messageBusFactory.Create(); // calling Start() more than once causes a MassTransitException, so create a new instance for next iteration instead. } } if (!started) { var message = "Reached retry limit trying to connect to RabbitMQ. Service stopping."; _logger.Error(message); throw new Exception(message); } return(busControl); }
public void SetUp() { _busControl = Substitute.For <IBusControl>(); _messageBusFactory = Substitute.For <IMessageBusFactory>(); _messageBusFactory.Create().Returns(_busControl); _eventProjectingService = new EventProjectingService(_messageBusFactory); }
public void SetUp() { _busControl = Substitute.For <IBusControl>(); _messageBusFactory = Substitute.For <IMessageBusFactory>(); _messageBusFactory.Create().Returns(_busControl); _outboxToMessageBusPublisher = Substitute.For <IOutboxToMessageBusPublisher>(); _waiterCommandService = new WaiterCommandService(_busControl, _outboxToMessageBusPublisher); }
public OrderPrintingMessageBusClient( IMessageBusFactory<OrderPrintingMessage> messageBusFactory) { var configManager = new MessageBusConfigManager( MessageBusPurposeNames.OrderPrinting, ParameterHelper.MessageBusHostAddress); configManager.UserNameForConnection = ParameterHelper.MessageBusUserName; configManager.PasswordForConnection = ParameterHelper.MessageBusPassword; configManager.ExchangeType = MessageBusExchangeType.Topic; configManager.PerQueueMessageTimeToLiveInMinutes = QueueMessageTimeToLiveInMinutes; configManager.QueueBindingPrefix = ParameterHelper.MessageBusQueueBindingPrefix; configManager.SubscriberShouldLogMessageDetails = true; configManager.QueueBindings.Add(new MessageBusQueueBinding( MessageBusQueueNames.OrderSubmitted, MessageBusRoutingKeys.OrderSubmitted)); _messageBus = messageBusFactory.Create(configManager, UnityHelper.Current.Resolve<MessageBusLogger>()); }