Cet article parle principalement de l'intégration de base. Commençons d'abord le code, puis parlons des fonctionnalités avancées.
Quelques termes dans Rabbitmq
Si vous ouvrez la console Web RabbitMQ, vous constaterez que l'un des exhabes est difficile à comprendre. Permettez-moi de l'expliquer brièvement ci-dessous.
Échange
Un interrupteur est comme un routeur. Nous envoyons d'abord des messages au commutateur, puis le commutateur fournit des messages à la file d'attente correspondante en fonction de la touche de routage. (Il est important de comprendre ce concept, et cela se reflète pleinement dans le code suivant)
File d'attente
La file d'attente est facile à comprendre, il n'est donc pas nécessaire de l'expliquer.
Obligatoire
Comment le commutateur sait-il quelle file d'attente transmettre ce message? Cela nécessite une liaison. C'est probablement: utilisez un RoutingKey pour lier une file d'attente à un certain échange, afin que le commutateur sache à quelle file d'attente pour transmettre le message en fonction de la touche de routage. (Ceci est pleinement reflété dans le code suivant)
Rejoignez les dépendances Rabbitmq Maven
<dependency> <proupId> org.springframework.boot </rombasid> <ArtifactId> printemp-boot-starter-amqp </etefactId> </Dependency>
Ajoutez une autre dépendance (cette dépendance peut être omise, principalement utilisée pour simplifier le code)
<dependency> <proupId> cn.hutool </rom grouped> <ArtefactId> hutool-all </retifactid> <version> 4.0.2 </-version> </Dependance>
Configuration Rabbitmqconfig.java
@Configurationpublic class rabbitmqconfig {public final static string queue_name = "spring-boot-queue"; public final static String Exchange_name = "Spring-Boot-Exchange"; public final static string routing_key = "printemp-boot-key"; // Créer une file d'attente @Bean Public Queue Queue () {return new Queue (queue_name); } // Créer un type de sujet Exchange @bean public topicexchange échange () {return new topicexchange (exchange_name); } // Utilisez la touche de routage (RoutingKey) pour lier la file d'attente (file d'attente, la file d'attente, topicexchange échange) {return bindingBuilder.bind (file d'attente) .to (échange) .with (routing_key); } @Bean public ConnectionFactory ConnectionFactory () {CachingConnectionFactory ConnectionFactory = new CachingConnectionFactory ("127.0.0.1", 5672); ConnectionFactory.SetUserName ("invité"); ConnectionFactory.SetPassword ("invité"); return ConnectionFactory; } @Bean public RabbitTemplate RabbitTemplate (ConnectionFactory ConnectionFactory) {return new RabbitTemplate (ConnectionFactory); }}Producteur
Appelez simplement la méthode ConvertandSend de RabbitTemplate directement. Il peut également être vu à partir du code suivant que nous n'envoyons pas le message directement à la file d'attente, mais l'envoyez d'abord au commutateur, et le commutateur livre ensuite notre message à la file d'attente correspondante en fonction de la touche de routage.
@RestControllerPublic Class ProductController {@autowired private labbitTemplate RabbitTemplate; @GetMapping ("/ sendMessage") Objet public SendMessage () {new Thread (() -> {for (int i = 0; i <100; i ++) {String Value = new DateTime (). ToString ("yyyy-mm-dd hh: mm: ss"); console.log ("Envoyer un message {}", valeur); RabbitTemplate.ConvertandSend (RabbitMQConfig.Exchange_name, RabbitMQConfig.Routing_Key, Value);}}). Start (); retourner "ok"; }}consommateur
Il est également très simple pour les consommateurs. Ils ont juste besoin d'ajouter l'annotation @rabbitListener à la méthode correspondante et de spécifier le nom de la file d'attente à écouter.
@ComponentPublic Class Consumer {@rabbitListener (que les queues = labbitmqconfig.queue_name) public void ConsumptionMessage (message de chaîne) {console.log ("Consumer Message {}", message); }}Exécuter le projet
Exécutez le projet, puis ouvrez le navigateur et entrez http://localhost:9999/sendMessage . Sur la console, vous pouvez voir les producteurs envoyer constamment des messages et les consommateurs consommant constamment des messages.
Ouvrez la console Web RabbitMQ et vous pouvez également voir les commutateurs et les files d'attente que nous avons configurés dans le code tout à l'heure, ainsi que des informations contraignantes.
Cliquez pour entrer les détails d'échange
Conclusion
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.