コード例 #1
0
        public IQueue GetQueue(string uri)
        {
            Guard.AgainstNullOrEmptyString(uri, "uri");

            var queue =
                _queues.Find(
                    candidate => Find(candidate, uri));

            if (queue != null)
            {
                return(queue);
            }

            lock (Padlock)
            {
                queue =
                    _queues.Find(
                        candidate => Find(candidate, uri));

                if (queue != null)
                {
                    return(queue);
                }

                var queueUri = new Uri(uri);

                if (queueUri.Scheme.Equals("resolver"))
                {
                    if (_uriResolver == null)
                    {
                        throw new InvalidOperationException(string.Format(ESBResources.NoUriResolverException, uri));
                    }

                    var resolvedQueueUri = _uriResolver.Get(uri);

                    if (resolvedQueueUri == null)
                    {
                        throw new KeyNotFoundException(string.Format(ESBResources.UriNameNotFoundException, _uriResolver.GetType().FullName,
                                                                     uri));
                    }

                    queue = new ResolvedQueue(CreateQueue(GetQueueFactory(resolvedQueueUri), resolvedQueueUri), queueUri);
                }
                else
                {
                    queue = CreateQueue(GetQueueFactory(queueUri), queueUri);
                }

                _queues.Add(queue);

                return(queue);
            }
        }
コード例 #2
0
        public IQueue GetQueue(string uri)
        {
            var queue =
                _queues.Find(
                    candidate => Find(candidate, uri));

            if (queue != null)
            {
                return(queue);
            }

            lock (_padlock)
            {
                queue =
                    _queues.Find(
                        candidate => Find(candidate, uri));

                if (queue != null)
                {
                    return(queue);
                }

                var queueUri = new Uri(uri);

                if (queueUri.Scheme.Equals("resolver"))
                {
                    if (UriResolver == null)
                    {
                        throw new InvalidOperationException(string.Format(ESBResources.NoUriResolverException, uri));
                    }

                    var resolvedQueueUri = UriResolver.Get(uri);

                    if (resolvedQueueUri == null)
                    {
                        throw new KeyNotFoundException(string.Format(ESBResources.UriNameNotFoundException, UriResolver.GetType().FullName, uri));
                    }

                    queue = new ResolvedQueue(GetQueueFactory(resolvedQueueUri).Create(resolvedQueueUri), queueUri);
                }
                else
                {
                    queue = GetQueueFactory(queueUri).Create(queueUri);
                }

                _queues.Add(queue);

                return(queue);
            }
        }
コード例 #3
0
        public IQueue GetQueue(string uri)
        {
            Guard.AgainstNullOrEmptyString(uri, "uri");

            var queue =
                _queues.Find(
                    candidate => Find(candidate, uri));

            if (queue != null)
            {
                return queue;
            }

            lock (Padlock)
            {
                queue =
                    _queues.Find(
                        candidate => Find(candidate, uri));

                if (queue != null)
                {
                    return queue;
                }

                var queueUri = new Uri(uri);

                if (queueUri.Scheme.Equals("resolver"))
                {
                    if (_uriResolver == null)
                    {
                        throw new InvalidOperationException(string.Format(ESBResources.NoUriResolverException, uri));
                    }

                    var resolvedQueueUri = _uriResolver.Get(uri);

                    if (resolvedQueueUri == null)
                    {
                        throw new KeyNotFoundException(string.Format(ESBResources.UriNameNotFoundException, _uriResolver.GetType().FullName,
                            uri));
                    }

                    queue = new ResolvedQueue(CreateQueue(GetQueueFactory(resolvedQueueUri), resolvedQueueUri), queueUri);
                }
                else
                {
                    queue = CreateQueue(GetQueueFactory(queueUri), queueUri);
                }

                _queues.Add(queue);

                return queue;
            }
        }