Предоставление пользовательской очереди SQS с помощью PCF Service Broker - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь создать новую очередь, но при использовании

cf create-service aws-sqs standard my-q

имя очереди в AWS назначается автоматически и представляет собой просто идентификатор, состоящий из случайных букв и цифр.

Это нормально при использовании обычного Java-клиента.Однако мы хотим использовать аннотацию spring-cloud-aws-messaging (@SqsListener), потому что она предлагает нам политики удаления из коробки и способ расширить видимость, чтобы мы могли легко реализовать повторы.

    @SqsListener(value = "my-q", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
    public void listen(TestItem item, Visibility visibility) {
        log.info("received message: " + item);

        //do business logic
        //if call fails
        visibility.extend(1000);
        //throw exception

        //if no failure, message will be dropped
    }

Имя аннотации в объявлении объявлено, поэтому мы не можем изменить его динамически после чтения переменной среды VCAP_SERVICE, введенной PCF в приложение.

Единственная альтернатива, которую мы можем придумать, - это использовать отражение для установки доступностина значение аннотации и установите значение на имя в VCAP_SERVICE, но это просто противно, и мы хотели бы избежать этого, если это возможно.

Есть ли способ изменить имя очередик чему-то конкретному по созданию? Это предполагает, что это возможно, как показано ниже:

cf create-service aws-sqs standard my-q -c '{ "CreateQueue": {  "QueueName": “my-q”, "Attributes": { "MaximumMessageSize": "1024"} } }'

Однако это не работает.Возвращает:

Неправильное использование: неверная конфигурация для флага -c.Укажите действительный объект JSON или путь к файлу, содержащему действительный объект JSON.

Как задать имя при создании очереди?Или единственный способ достичь моей конечной цели - использовать отражение?

РЕДАКТИРОВАТЬ: Как отметил Даниэль Микуса, двойные кавычки не были настоящими двойными кавычками, и это стало причиной ошибки.Команда теперь выполнена успешно, однако она не создает очередь с намеченным именем.Теперь мне интересно, нужно ли вместо этого имени установить bind-service.У команды тоже есть опция -c, но я не могу найти никакой документации, которая бы поддерживала параметры, доступные для службы aws-sqs.

...