Este artículo habla principalmente de integración básica. Primero comencemos el código y luego hablemos de las características avanzadas.
Algunos términos en Rabbitmq
Si abre la consola web de RabbitMQ, encontrará que uno de los exhanges es difícil de entender. Permítanme explicarlo brevemente a continuación.
Intercambio
Un interruptor es como un enrutador. Primero enviamos mensajes al conmutador, y luego el conmutador entrega mensajes a la cola correspondiente de acuerdo con la clave de enrutamiento. (Es importante comprender este concepto, y esto se refleja completamente en el código posterior)
Cola
La cola es fácil de entender, por lo que no hay necesidad de explicarlo.
Vinculante
¿Cómo sabe el interruptor qué cola entrega este mensaje? Esto requiere vinculación. Probablemente sea: use una tecla de enrutamiento para unir una cola a un cierto intercambio, para que el interruptor sepa a qué cola entregar el mensaje de acuerdo con la clave de enrutamiento. (Esto se refleja completamente en el código posterior)
Unirse a las dependencias de RabbitMQ Maven
<Spendency> <MoupRupid> org.springframework.boot </groupid> <artifactID> spring-boot-starter-amqp </artifactid> </pendency>
Agregue otra dependencia (esta dependencia se puede omitir, se usa principalmente para simplificar el código)
<Spendency> <MoupRoMID> CN.HUTOOL </GroupId> <AtifactId> HUTOOL-ALL </artifactid> <versión> 4.0.2 </versión> </pendency>
Configuración de rabbitmqconfig.java
@ConfigurationPublic Class RabbitMQConfig {public Final Static String queue_name = "Spring-Boot-Teaue"; Public final static string Exchange_name = "Spring-Boot-Exchange"; Public Final Static String Routing_Key = "Spring-Boot-Key"; // Crear una cola @Bean Public Queue Queue () {return new Queue (queue_name); } // Cree un tipo de tema Exchange @Bean public topicExchange Exchange () {return New TopiceXchange (Exchange_Name); } // Use la clave de enrutamiento (RoutingKey) para unir la cola (cola cola, topicExchange Exchange) {return bindingBuilder.bind (cola) .to (intercambio) .with (ruting_key); } @Bean public ConnectionFactory ConnectionFactory () {CachingConnectionFactory ConnectionFactory = new CachingConnectionFactory ("127.0.0.1", 5672); ConnectionFactory.setUsername ("invitado"); ConnectionFactory.setPassword ("invitado"); return ConnectionFactory; } @Bean public Rabbittemplate Rabbittemplate (ConnectionFactory ConnectionFactory) {return New Rabbittemplate (ConnectionFactory); }}Productor
Simplemente llame directamente al método ConvertandSend de Rabbittemplate. También se puede ver desde el siguiente código que no enviamos el mensaje directamente a la cola, pero primero lo enviamos al conmutador, y el conmutador luego entrega nuestro mensaje a la cola correspondiente de acuerdo con la clave de enrutamiento.
@RestControllerPublic Class ProducerController {@aUtowired private rabbittemplate rabbittemplate; @GetMapping ("/sendMessage") objeto público sendmessage () {new Thread (()-> {for (int i = 0; i <100; i ++) {string value = new DateTime (). ToString ("yyyy-mm-dd hh: mm: ss"); console.log ("Enviar mensaje {}", value); rabbittemplate.convertandsend (rabbitmqconfig.exchange_name, rabbitmqconfig.routing_key, valor); regresar "OK"; }}consumidor
También es muy simple para los consumidores. Solo necesitan agregar la anotación @RabitListener al método correspondiente y especificar el nombre de la cola a escuchar.
@ComponentPublic Class Consumer {@rabbitListener (queues = rabbitmqconfig.queue_name) public void consumoMessage (string mensaje) {console.log ("Consume el mensaje {}", mensaje); }}Ejecutar el proyecto
Ejecute el proyecto, luego abra el navegador e ingrese http://localhost:9999/sendMessage . En la consola, puede ver a los productores que constantemente envían mensajes, y los consumidores consumen mensajes constantemente.
Abra la consola web de RabbitMQ y también puede ver los conmutadores y colas que configuramos en el código en este momento, así como información vinculante.
Haga clic para ingresar los detalles de intercambio
Conclusión
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.