示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SubscriptionClient"/> class.
        /// </summary>
        /// <param name="bus">The bus.</param>
        /// <param name="router">The router.</param>
        /// <param name="subscriptionServiceUri">The subscription service URI.</param>
        /// <param name="startTimeout">The start timeout.</param>
        public SubscriptionClient(IServiceBus bus, SubscriptionRouter router, Uri subscriptionServiceUri, TimeSpan startTimeout)
        {
            _bus    = bus;
            _router = router;
            _subscriptionServiceUri = subscriptionServiceUri;
            _startTimeout           = startTimeout;
            _network = router.Network;

            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting SubscriptionClient using {0}", subscriptionServiceUri);
            }

            VerifyClientAndServiceNotOnSameEndpoint(bus);

            _ready.Reset();

            var consumerInstance = new SubscriptionMessageConsumer(_router, _network);

            _unsubscribeAction  = _bus.ControlBus.SubscribeInstance(consumerInstance);
            _unsubscribeAction += _bus.ControlBus.SubscribeContextHandler <SubscriptionRefresh>(Consume);

            _subscriptionEndpoint = _bus.GetEndpoint(subscriptionServiceUri);
            _producer             = new SubscriptionServiceMessageProducer(router, _subscriptionEndpoint);

            WaitForSubscriptionServiceResponse();
        }