示例#1
0
        public SendSettings GetSendSettings(Uri address)
        {
            var name = address.AbsolutePath.Substring(1);

            string[] pathSegments = name.Split('/');
            if (pathSegments.Length == 2)
            {
                name = pathSegments[1];
            }

            if (name == "*")
            {
                throw new ArgumentException("Cannot send to a dynamic address");
            }

            EntityNameValidator.ThrowIfInvalidEntityName(name);

            var isTemporary = address.Query.GetValueFromQueryString("temporary", false);

            var durable    = address.Query.GetValueFromQueryString("durable", !isTemporary);
            var autoDelete = address.Query.GetValueFromQueryString("autodelete", isTemporary);

            var settings = new AmazonSqsSendSettings(name, durable, autoDelete);

            var bindToQueue = address.Query.GetValueFromQueryString("bind", false);

            if (bindToQueue)
            {
                var queueName = WebUtility.UrlDecode(address.Query.GetValueFromQueryString("queue"));
                settings.BindToQueue(queueName);
            }

            return(settings);
        }
示例#2
0
        public Uri GetDestinationAddress(string topicName, Action <ITopicConfigurator> configure = null)
        {
            var sendSettings = new AmazonSqsSendSettings(topicName, true, false);

            configure?.Invoke(sendSettings);

            return(sendSettings.GetSendAddress(_hostAddress));
        }
示例#3
0
        public Uri GetDestinationAddress(Type messageType, Action <ITopicConfigurator> configure = null)
        {
            var isTemporary = TypeMetadataCache.IsTemporaryMessageType(messageType);

            var durable    = !isTemporary;
            var autoDelete = isTemporary;

            var name = _messageNameFormatter.GetMessageName(messageType).ToString();

            var settings = new AmazonSqsSendSettings(name, durable, autoDelete);

            configure?.Invoke(settings);

            return(settings.GetSendAddress(_hostAddress));
        }