Я пытаюсь создать новую очередь, но при использовании
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
.