/// <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(); }