protected MessageQueueingServiceTests(IDiagnosticService diagnosticService, TMessageQueueingService messageQueueingService)
 {
     DiagnosticService      = diagnosticService ?? Platibus.Diagnostics.DiagnosticService.DefaultInstance;
     MessageQueueingService = messageQueueingService;
     SecurityTokenService   = new JwtSecurityTokenService();
     DiagnosticService.AddSink(VerificationSink);
 }
예제 #2
0
        public AesMessageEncryptionServiceTests()
        {
            var key = GenerateKey();

            Options = new AesMessageEncryptionOptions(key)
            {
                DiagnosticService = DiagnosticService
            };
            DiagnosticService.AddSink(EmittedDiagnosticEvents.Add);
        }
예제 #3
0
        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);
        }
예제 #4
0
 /// <summary>
 /// Adds a new <see cref="IDiagnosticEventSink"/> that invokes the specified callback
 /// when diagnostic events are emitted.
 /// </summary>
 /// <param name="diagnosticService">The diagnostic service to which the sink is to be
 /// added</param>
 /// <param name="consume">The callback used to consume the diagnostic events emitted
 /// throug the <paramref name="diagnosticService"/></param>
 public static void AddSink(this IDiagnosticService diagnosticService, Action <DiagnosticEvent> consume)
 {
     diagnosticService.AddSink(new DelegateDiagnosticEventSink(consume));
 }