public async Task Given_Remote_Host_Not_Listening_When_Sending_Then_Transport_Service_Throws_TransportException() { var endpoint = new UriBuilder { Scheme = "http", Host = "localhost", Port = 52180, Path = "/platibus.test/" }.Uri; var transportService = new HttpTransportService(endpoint, ReadOnlyEndpointCollection.Empty, new InMemoryMessageQueueingService(), null, new InMemorySubscriptionTrackingService()); var message = new Message(new MessageHeaders { {HeaderName.ContentType, "text/plain"}, {HeaderName.MessageId, Guid.NewGuid().ToString()}, {HeaderName.Destination, endpoint.ToString()} }, "Hello, world!"); Exception exception = null; try { await transportService.SendMessage(message); } catch (AggregateException ae) { exception = ae.InnerExceptions.FirstOrDefault(); } catch (Exception ex) { exception = ex; } Assert.That(exception, Is.Not.Null); Assert.That(exception, Is.InstanceOf<ConnectionRefusedException>()); }
private HttpServer(IHttpServerConfiguration configuration) { _baseUri = configuration.BaseUri; _metricsCollector = new HttpMetricsCollector(); _diagnosticService = configuration.DiagnosticService; _diagnosticService.AddSink(_metricsCollector); _subscriptionTrackingService = configuration.SubscriptionTrackingService; _messageQueueingService = configuration.MessageQueueingService; _messageJournal = configuration.MessageJournal; var transportServiceOptions = new HttpTransportServiceOptions(_baseUri, _messageQueueingService, _subscriptionTrackingService) { DiagnosticService = configuration.DiagnosticService, Endpoints = configuration.Endpoints, MessageJournal = configuration.MessageJournal, BypassTransportLocalDestination = configuration.BypassTransportLocalDestination }; TransportService = new HttpTransportService(transportServiceOptions); _bus = new Bus(configuration, _baseUri, TransportService, _messageQueueingService); var authorizationService = configuration.AuthorizationService; _resourceRouter = new ResourceTypeDictionaryRouter(configuration.BaseUri) { { "message", new MessageController(TransportService.ReceiveMessage, authorizationService) }, { "topic", new TopicController(_subscriptionTrackingService, configuration.Topics, authorizationService) }, { "journal", new JournalController(configuration.MessageJournal, configuration.AuthorizationService) }, { "metrics", new MetricsController(_metricsCollector) } }; _httpListener = InitHttpListener(_baseUri, configuration.AuthenticationSchemes); var acceptBlockOptions = new ExecutionDataflowBlockOptions { CancellationToken = _cancellationTokenSource.Token }; if (configuration.ConcurrencyLimit > 0) { acceptBlockOptions.MaxDegreeOfParallelism = configuration.ConcurrencyLimit; } _acceptBlock = new ActionBlock <HttpListenerContext>(async ctx => await Accept(ctx), acceptBlockOptions); }
private async Task Init(CancellationToken cancellationToken = default(CancellationToken)) { _configuration = await IISConfigurationManager.LoadConfiguration(); _baseUri = _configuration.BaseUri; _subscriptionTrackingService = _configuration.SubscriptionTrackingService; _messageQueueingService = _configuration.MessageQueueingService; _messageJournalingService = _configuration.MessageJournalingService; var endpoints = _configuration.Endpoints; _transportService = new HttpTransportService(_baseUri, endpoints, _messageQueueingService, _messageJournalingService, _subscriptionTrackingService); _bus = new Bus(_configuration, _baseUri, _transportService, _messageQueueingService); await _transportService.Init(cancellationToken); await _bus.Init(cancellationToken); _resourceRouter = new ResourceTypeDictionaryRouter { {"message", new MessageController(_bus.HandleMessage)}, {"topic", new TopicController(_subscriptionTrackingService, _configuration.Topics)} }; }
private HttpServer(IHttpServerConfiguration configuration) { _baseUri = configuration.BaseUri; _subscriptionTrackingService = configuration.SubscriptionTrackingService; _messageQueueingService = configuration.MessageQueueingService; _messageJournalingService = configuration.MessageJournalingService; var endpoints = configuration.Endpoints; _transportService = new HttpTransportService(_baseUri, endpoints, _messageQueueingService, _messageJournalingService, _subscriptionTrackingService); _bus = new Bus(configuration, _baseUri, _transportService, _messageQueueingService); _resourceRouter = new ResourceTypeDictionaryRouter { {"message", new MessageController(_bus.HandleMessage)}, {"topic", new TopicController(_subscriptionTrackingService, configuration.Topics)} }; _httpListener = InitHttpListener(_baseUri, configuration.AuthenticationSchemes); }