L'article précédent parlait de l'utilisation de RabbitMQ pour envoyer des messages, et cet article parlera de la réception de messages.
Dans JMS traditionnel, il existe deux manières d'obtenir des informations de la file d'attente, la méthode synchrone utilisant JmsTemplate et la méthode asynchrone utilisant pojo piloté par message. Spring AMQP fournit également un moyen similaire pour obtenir les messages envoyés via AMQP.
La méthode la plus simple pour recevoir des informations fournies par RabbitTemplate est la méthode recevoir(), grâce à laquelle vous pouvez obtenir un objet Message de la file d'attente :
Message message = rabbit.receive("spittle.test.queue");
Ou vous pouvez également obtenir la file d'attente de messages par défaut via la configuration. Ceci est réalisé en définissant l'attribut de file d'attente lors de la configuration du modèle :
<template id="rabbitTemplate" connection-factory="connectionFactory"exchange="spittle.test.exchange" routing-key="spittle.test" queue="spittle.test.queue" />
Message message = rabbit.receive( );
Spittle spittle = (Spittle) rabbit.receiveAndConvert("spittle.test.queue");
L'appel des méthodes recevoir() et recevoirAndConvert() retournera immédiatement. S'il n'y a aucun message en attente dans la file d'attente, vous obtiendrez null. À l’heure actuelle, les programmeurs doivent généralement gérer eux-mêmes les interrogations et les threads nécessaires pour implémenter la surveillance des files d’attente. Si vous ne souhaitez pas interroger de manière synchrone et attendre que les messages arrivent à chaque fois, vous pouvez utiliser le pojo basé sur les messages fourni par Spring AMQP. Voyons comment utiliser le pojo basé sur les messages pour recevoir des messages.
public class SpittleTestHandler {public void handleSpittleTest (Spittle spittle) { ... } }
Ici, vous devez également déclarer SpittleTestHandler comme bean dans le contexte de l'application Spring :
<bean id="spittleListener"class="com.***.spittr.test.SpittleTestHandler">
<listener-container connection-factory="connectionFactory"><listener ref="spittleListener" method="handleSpittleTest" queue-names="spittle.test.queue" /></listener-container>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!