2017-10-12 10 views
0

J'ai un tas de files d'attente dans Amazon SQS et j'ai un programme d'écoute de file d'attente asynchrone fonctionnant dans un service de printemps. J'ai suivi this tutorial et cela fonctionne comme un charme. Mon problème est, je ne peux pas simplement coder en dur le nom de la file d'attente dans l'annotation @MessageMapping, je dois être en mesure de le saisir à partir de variables d'environnement définies par l'utilisateur. Voici le bit dont je parle ...Auditeur de requête asynchrone AWS SQS avec java et spring. Comment ajouter des valeurs à partir de variables d'environnement dans l'annotation @MessageMapping

@MessageMapping("queueName") 
public void onSQSMessage(String payload) { 
    //handle payload 
} 

Si je viens coder en dur le nom de la file d'attente cela fonctionne très bien, mais il doit être des variables d'environnement. Toute aide serait grandement appréciée!

Répondre

1

Vous pouvez utiliser le langage d'expression depuis un moment.

@MessageMapping(${"queueName"}) 
public void onSQSMessage(String payload) { 
    //handle payload 
} 

Voir la question JIRA: https://jira.spring.io/browse/SPR-13271

+0

Ah j'ai essayé cela, mais j'ai eu une exception "ne pouvait pas résoudre l'espace réservé". Il semble ne fonctionner que lorsque cette valeur nommée est dans le fichier application.properties. –

+0

Quel était le nom de votre variable d'environnement et quel nom d'espace réservé avez-vous utilisé? Parce qu'il y a peut-être une transformation de la variable. Comme PERSON_FIRST_NAME à person.first.name –

+0

La variable était non imbriquée dans la chaîne JSON de mes env. VCAP_SERVICES et elle s'appelait "backup_data_queue_name" et c'est ainsi que je l'ai référencée –