/// <summary>
        /// Setups the service bus.
        /// </summary>
        private void SetupServiceBus()
        {
            //Setup the service subscription channel
            var config = CloudApplicationConfiguration.Current.GetSection <ServiceBusConfigurationSection>(ServiceBusConfigurationSection.SectionName);

            pubSubChannel = new ServiceBusPublishSubscribeChannel(config.Endpoints.Get(config.DefaultEndpoint));

            CreateSubscriptionForService(pubSubChannel, "RoutingService");
        }
        /// <summary>
        /// Setups the service bus.
        /// </summary>
        public void SendMessageToRouter()
        {
            //Setup the service subscription channel

            var config = CloudApplicationConfiguration.Current.GetSection <ServiceBusConfigurationSection>(ServiceBusConfigurationSection.SectionName);

            var routerServiceCtx = new RoutingMessageContext {
                To = "ServiceRouter"
            };

            using (var pubSubChannel = new ServiceBusPublishSubscribeChannel(config.Endpoints.Get(config.DefaultEndpoint)))
            {
                pubSubChannel.Settings.MessageTimeToLive = TimeSpan.FromSeconds(120);


                //publish the message
                pubSubChannel.Publish(this.model, routerServiceCtx);
            }
        }
        /// <summary>
        /// Creates the subscription for service.
        /// </summary>
        /// <param name="pubSubChannel">The pub sub channel.</param>
        /// <param name="p">The p.</param>
        private void CreateSubscriptionForService(ServiceBusPublishSubscribeChannel pubSubChannel, string serviceName)
        {
            //Define a filter to receive only messages that have a specific "To" property
            var filter = FilterExpressions.GroupOr(
                FilterExpressions.MatchTo(serviceName),
                FilterExpressions.MatchTo("ServiceRouter"));

            //Now we need to create an observer, that will check for new incoming messages
            modelObserver = Observer.Create <RouteMeModel>(msg =>
            {
                var exists = CheckIfRoutingEntryExists(msg);

                if (!exists)
                {
                    AddNewServiceEntry(msg);
                }
            });

            pubSubChannel.Subscribe(serviceName, modelObserver, filter);
        }