Spring Cloud SQS @MessageMapping требует постоянного

Я использую аннотацию @MessageMapping для опроса моей очереди SQS. Никаких проблем здесь, однако. У меня есть общий вопрос об изменении имени очереди в зависимости от среды приложения.

Допустим, что локально в моей тестовой среде я хочу, чтобы моя аннотация @MessageMapping опрашивала "Имя очереди разработки", но при развертывании в производство я хочу изменить значение @MessageMapping на "имя очереди производства".

@MessageMapping(ENV_SPECIFIC_QUEUE_NAME)
public void poll(String payload) {
    //do something
}

Есть ли способ, которым это может быть достигнуто через конфиг?

2 ответа

@MessageMapping("${queue_name_from_properties file}")

На данный момент невозможно динамически установить имя очереди в аннотации @MessageMapping. Я открыл проблему, чтобы разрешить использование свойства, которое будет установлено заполнителем свойства.

А пока я рекомендую вам поработать с шаблоном CloudFormation. С помощью этого решения вы можете использовать логическое имя очереди, которое вы определили в шаблоне, и оно будет автоматически преобразовано в его физическое имя. Интеграция с CloudFormation описана здесь. С помощью этого решения вы можете запускать несколько стеков с одним и тем же шаблоном (dev,gration, prod,...), и у вас не будет проблем с именами очередей.

Другие вопросы по тегам