Ejemplo n.º 1
0
        public string Subscribe(string channel, SubscribeCallback cb)
        {
            subscriber.Subscribe(channel);

            var callbackGuid = genGuid();

            if (!subscribeCallbacks.ContainsKey(channel))
            {
                subscribeCallbacks[channel] = new Dictionary <string, SubscribeCallback>();
            }

            subscribeCallbacks[channel][callbackGuid] = cb;

            if (channels.Contains(channel))
            {
                return(callbackGuid);
            }

            channels.Add(channel);
            var msg = new Message
            {
                cmd = Message.Cmd.SUBSCRIBE,
                source_component_guid = guid,
                identifier            = channel,
                payload = stringToByteArray(".")
            };

            publisher.Publish(proxyGuid, ref msg);
            return(callbackGuid);
        }
Ejemplo n.º 2
0
        private bool Connect()
        {
            if (isConnecting)
            {
                return(false);
            }
            isConnecting = true;
            try
            {
                var ret = redis.ZRevRange("ZSET:PROXIES", 0, 0);
                if (ret.Length < 1)
                {
                    return(false);
                }
                string buf        = System.Text.Encoding.UTF8.GetString(ret[0]);
                var    r          = buf.Split('#');
                string _proxyGuid = r[0];
                proxyGuid = _proxyGuid;
                string connectionString = r[1];
                requester = new Requester(guid, connectionString, publisherPort);
                var sub = requester.GetSubscriberConnectionString();
                if (sub == String.Empty)
                {
                    return(false);
                }
                subscriber   = new Subscriber(sub, _proxyGuid, guid);
                isConnecting = false;

                foreach (var c in channels)
                {
                    subscriber.Subscribe(c);
                }

                return(true);
            }
            catch (System.Exception e)
            {
                log.ErrorFormat("Exception on ESBClient.Connect(): {0}", e.ToString());
                isConnecting = false;
                return(false);
            }
        }
Ejemplo n.º 3
0
        private bool Connect()
        {
            if (isConnecting) return false;
            isConnecting = true;
            try
            {
                var ret = redis.ZRevRange("ZSET:PROXIES", 0, 0);
                if (ret.Length < 1)
                {
                    return false;
                }
                string buf = System.Text.Encoding.UTF8.GetString(ret[0]);
                var r = buf.Split('#');
                string _proxyGuid = r[0];
                proxyGuid = _proxyGuid;
                string connectionString = r[1];
                requester = new Requester(guid, connectionString, publisherPort);
                var sub = requester.GetSubscriberConnectionString();
                if (sub == String.Empty) return false;
                subscriber = new Subscriber(sub, _proxyGuid, guid);
                isConnecting = false;

                foreach (var c in channels)
                {
                    subscriber.Subscribe(c);
                }

                return true;
            }
            catch (System.Exception e)
            {
                log.ErrorFormat("Exception on ESBClient.Connect(): {0}", e.ToString());
                isConnecting = false;
                return false;
            }
        }