コード例 #1
0
        public IMessageQueue GetQueue(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(null);
            }

            if (_queues.TryGetValue(name, out var queue) && queue != null)
            {
                return(queue);
            }

            lock (_queues)
            {
                if (_queues.TryGetValue(name, out queue) && queue != null)
                {
                    return(queue);
                }

                var options = MessageUtility.GetOptions();

                if (options != null && options.Queues.TryGet(name, out var option))
                {
                    _queues.Add(option.Name, queue = new MessageQueue(option.Name));
                }

                return(queue);
            }
        }
コード例 #2
0
        public static ICertificate GetCertificate(string name)
        {
            var options     = MessageUtility.GetOptions();
            var certificate = string.Empty;

            if (options.Topics.TryGet(name, out var option))
            {
                certificate = option.Certificate;
            }

            if (string.IsNullOrWhiteSpace(certificate))
            {
                certificate = options.Topics.Certificate;
            }

            if (string.IsNullOrWhiteSpace(certificate))
            {
                return(Aliyun.Options.GeneralOptions.Instance.Certificates.Default);
            }

            return(Aliyun.Options.GeneralOptions.Instance.Certificates.Get(certificate));
        }
コード例 #3
0
        public static string GetRequestUrl(string topicName, params string[] parts)
        {
            var options = MessageUtility.GetOptions();
            var region  = options.Topics.Region ?? Aliyun.Options.GeneralOptions.Instance.Name;

            if (options.Topics.TryGet(topicName, out var option) && option.Region.HasValue)
            {
                region = option.Region.Value;
            }

            var center = ServiceCenter.GetInstance(region, Aliyun.Options.GeneralOptions.Instance.IsIntranet);

            var path = parts == null ? string.Empty : string.Join("/", parts);

            if (string.IsNullOrEmpty(path))
            {
                return(string.Format("http://{0}.{1}/topics/{2}", options.Name, center.Path, topicName));
            }
            else
            {
                return(string.Format("http://{0}.{1}/topics/{2}/{3}", options.Name, center.Path, topicName, path));
            }
        }