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();
		}
Esempio n. 2
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, ISubscriptionRouter 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();
        }
Esempio n. 3
0
        public MulticastSubscriptionClient(IServiceBus subscriptionBus, SubscriptionRouter router)
        {
            _subscriptionBus = subscriptionBus;
            _router          = router;
            _network         = router.Network;
            _peerId          = router.PeerId;
            _peerUri         = router.PeerUri;

            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting MulticastSubscriptionService using {0}", subscriptionBus.Endpoint.Address);
            }

            var consumerInstance = new SubscriptionMessageConsumer(_router, _network);

            var msmqAddress = subscriptionBus.Endpoint.Address as IMsmqEndpointAddress;

            if (msmqAddress == null || msmqAddress.Uri.Scheme != MulticastMsmqTransportFactory.MulticastScheme)
            {
                throw new EndpointException(subscriptionBus.Endpoint.Address.Uri,
                                            "The multicast subscription client must be used on a multicast MSMQ endpoint");
            }

            _producer = new BusSubscriptionMessageProducer(router, subscriptionBus.Endpoint, msmqAddress.InboundUri);

            _unsubscribeAction  = _subscriptionBus.SubscribeInstance(consumerInstance);
            _unsubscribeAction += _subscriptionBus.SubscribeInstance(this);
        }