private static async Task <RabbitMQHost> StartAsync( IRabbitMQHostConfiguration configuration, CancellationToken cancellationToken = default(CancellationToken)) { var server = new RabbitMQHost(configuration); await server.Init(cancellationToken); return(server); }
private RabbitMQHost(IRabbitMQHostConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var diagnosticService = configuration.DiagnosticService; var baseUri = configuration.BaseUri.WithoutTrailingSlash(); _connectionManager = new ConnectionManager(); var encoding = configuration.Encoding ?? Encoding.UTF8; var defaultQueueOptions = new QueueOptions { AutoAcknowledge = configuration.AutoAcknowledge, MaxAttempts = configuration.MaxAttempts, ConcurrencyLimit = configuration.ConcurrencyLimit, RetryDelay = configuration.RetryDelay, IsDurable = configuration.IsDurable }; var securityTokenService = configuration.SecurityTokenService ?? new JwtSecurityTokenService(); _messageJournal = configuration.MessageJournal; var queueingOptions = new RabbitMQMessageQueueingOptions(baseUri) { ConnectionManager = _connectionManager, DefaultQueueOptions = defaultQueueOptions, DiagnosticService = diagnosticService, Encoding = encoding, SecurityTokenService = securityTokenService }; _messageQueueingService = new RabbitMQMessageQueueingService(queueingOptions); var transportServiceOptions = new RabbitMQTransportServiceOptions(baseUri, _connectionManager) { DiagnosticService = configuration.DiagnosticService, MessageJournal = configuration.MessageJournal, SecurityTokenService = configuration.SecurityTokenService, Encoding = configuration.Encoding, DefaultQueueOptions = defaultQueueOptions, Topics = configuration.Topics }; _transportService = new RabbitMQTransportService(transportServiceOptions); Bus = new Bus(configuration, configuration.BaseUri, _transportService, _messageQueueingService); }
/// <summary> /// Creates and starts a new <see cref="RabbitMQHost"/> /// </summary> /// <param name="configuration">The HTTP sever configuration</param> /// <param name="cancellationToken">(Optional) A cancellation token that can be used by the /// caller to cancel RabbitMQ host initialization</param> /// <returns>Returns the fully initialized and listening RabbitMQ host</returns> public static RabbitMQHost Start(IRabbitMQHostConfiguration configuration, CancellationToken cancellationToken = default(CancellationToken)) { return(StartAsync(configuration, cancellationToken) .GetResultFromCompletionSource(cancellationToken)); }