internal RabbitMQBusServiceOptions Build() { var strict = Strict; object defaultChannelTag = DefaultChannelTag; var connectionFactory = new ConnectionFactory(); var messageTypeOptionsProvider = strict ? null : MessageTypeOptionsProvider.CreateDefaultProvider(); foreach (var action in ConfigureConnectionActions) { action(connectionFactory); } var channelsOptions = ChannelsOptionsFactories .Select(factory => factory(messageTypeOptionsProvider)) .ToArray(); if (!strict) { bool autoDefaultChannel; if (defaultChannelTag == null) { defaultChannelTag = new object(); autoDefaultChannel = true; } else { autoDefaultChannel = !channelsOptions.Any(x => defaultChannelTag.Equals(x.Tag)); } if (autoDefaultChannel) { Array.Resize(ref channelsOptions, channelsOptions.Length + 1); channelsOptions[channelsOptions.Length - 1] = new RabbitMQChannelOptionsBuilder(Services, defaultChannelTag, messageTypeOptionsProvider).Build(); } } return(new RabbitMQBusServiceOptions( Services, connectionFactory, defaultChannelTag, messageTypeOptionsProvider, channelsOptions )); }
internal RabbitMQChannelOptionsBuilder(IServiceProvider services, object tag, MessageTypeOptionsProvider baseMessageTypeOptionsProvider) { Services = services; Tag = tag; MessageTypeOptionsProvider = new MessageTypeOptionsProvider(baseMessageTypeOptionsProvider); }