예제 #1
0
 public OutboundQueueListener(ITransportService transportService,
     IMessageJournalingService messageJournalingService, Func<Uri, IEndpointCredentials> credentialsFactory)
 {
     if (transportService == null)
     {
         throw new ArgumentNullException("transportService");
     }
     _transportService = transportService;
     _messageJournalingService = messageJournalingService;
     _credentialsFactory = credentialsFactory ??
                           (uri => null);
 }
예제 #2
0
        public HttpTransportService(Uri baseUri, IEndpointCollection endpoints, IMessageQueueingService messageQueueingService, IMessageJournalingService messageJournalingService, ISubscriptionTrackingService subscriptionTrackingService)
        {
            if (baseUri == null) throw new ArgumentNullException("baseUri");
            if (messageQueueingService == null) throw new ArgumentNullException("messageQueueingService");
            if (subscriptionTrackingService == null) throw new ArgumentNullException("subscriptionTrackingService");

            _baseUri = baseUri;
            _endpoints = endpoints == null
                ? ReadOnlyEndpointCollection.Empty
                : new ReadOnlyEndpointCollection(endpoints);

            _messageQueueingService = messageQueueingService;
            _messageJournalingService = messageJournalingService;
            _subscriptionTrackingService = subscriptionTrackingService;
            _outboundQueueName = "Outbound";
        }
예제 #3
0
 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)}
     };
 }
예제 #4
0
파일: Bus.cs 프로젝트: tdbrian/Platibus
        /// <summary>
        /// Initializes a new <see cref="Bus"/> with the specified configuration and services
        /// provided by the host
        /// </summary>
        /// <param name="configuration">The core bus configuration</param>
        /// <param name="baseUri">The base URI provided by the host</param>
        /// <param name="transportService">The transport service provided by the host</param>
        /// <param name="messageQueueingService">The message queueing service provided by the host</param>
        /// <exception cref="ArgumentNullException">Thrown if any of the parameters are <c>null</c></exception>
        public Bus(IPlatibusConfiguration configuration, Uri baseUri, ITransportService transportService, IMessageQueueingService messageQueueingService)
        {
            if (configuration == null) throw new ArgumentNullException("configuration");
            if (baseUri == null) throw new ArgumentNullException("baseUri");
            if (transportService == null) throw new ArgumentNullException("transportService");
            if (messageQueueingService == null) throw new ArgumentNullException("messageQueueingService");

            _baseUri = baseUri;
            _transportService = transportService;
            _messageQueueingService = messageQueueingService;

            // TODO: Throw configuration exception if message queueing service, message naming
            // service, or serialization service are null

            _messageJournalingService = configuration.MessageJournalingService;
            _messageNamingService = configuration.MessageNamingService;
            _serializationService = configuration.SerializationService;

            _endpoints = new ReadOnlyEndpointCollection(configuration.Endpoints);
            _topics = configuration.Topics.ToList();
            _sendRules = configuration.SendRules.ToList();
            _handlingRules = configuration.HandlingRules.ToList();
            _subscriptions = configuration.Subscriptions.ToList();
        }
예제 #5
0
        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);
        }