Exemple #1
0
        private static async Task <RabbitMQHost> StartAsync(
            IRabbitMQHostConfiguration configuration,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            var server = new RabbitMQHost(configuration);
            await server.Init(cancellationToken);

            return(server);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 /// <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));
 }