Dalam projek Spring, anda boleh menggunakan Spring-Rabbit untuk mengendalikan RabbitMQ
Terutama dalam projek but spring, hanya perkenalkan sahaja pergantungan pemula amqp yang sepadan, gunakan RabbitTemplate dengan mudah untuk menghantar mesej dan gunakan anotasi untuk menerima mesej.
Secara amnya semasa proses pembangunan:
Kejuruteraan pengeluar:
fail application.yml mengkonfigurasi maklumat berkaitan RabbitMQ
Tulis kelas konfigurasi dalam projek pengeluar untuk mencipta suis dan baris gilir, dan ikatkannya
Suntikan objek RabbitTemplate dan hantar mesej ke suis melalui objek RabbitTemplate
Kejuruteraan Pengguna:
application.yml fail konfigurasi maklumat berkaitan RabbitMQ
Buat kelas pemprosesan mesej , digunakan untuk terima mesej dalam baris gilir dan prosesnya
Tambah kebergantunganUbah suai kandungan fail pom.xml seperti berikut:1 Buat projek SpringBoot pengeluar (maven)
3 Tulis konfigurasi yml, konfigurasi maklumat asas
2 koordinat
b4b38e33757a6497aa8690936b905cc1
factId>
5473f4530c9f6e728f1ecc3ffa992f5e4 perhubungan
5. Inject RabbitTemplate, kaedah panggilan dan penghantaran mesej lengkap
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <groupId>com.itheima</groupId> <artifactId>springboot-rabbitmq-producer</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies> </project>Kelas permulaan
package com.itheima.rabbitmq; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ProducerApplication { public static void main(String[] args) { SpringApplication.run(ProducerApplication.class); } }
musim bunga:Ikat suis dan baris gilirBuat kelas konfigurasi com.itheima.rabbitmq.config yang mengikat baris gilir RabbitMQ dan tukar .RabbitMQConfigrabbitmq:
hos: localhost
port: 5672
virtual-host: / itcast
nama pengguna: heima
kata laluan: heima
package com.itheima.rahhitmq.config; import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration /// 配置类 public class RabbitMQConfig { public static final String EXCHAGE_NAME = "boot_topic_exchange"; public static final String QUEUE_NAME = "boot_queue"; // 交换机 @Bean("bootExchange") public Exchange bootExchange(){ // 构建交换机对象 return ExchangeBuilder.topicExchange(EXCHAGE_NAME).durable(true).build(); } //Queue 队列 @Bean("bootQueue") public Queue bootQueue(){ return QueueBuilder.durable(QUEUE_NAME).build(); } //队列和交换机的关系 Binding /** * 1 知道那个队列 * 2 知道那个交换机 * 3 routingKey */ @Bean public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){ return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs(); } }Bina projek penggunaBuat projekSebelah pengeluaran
1. Cipta projek SpringBoot pengeluar2 Perkenalkan permulaan, bergantung pada koordinat org.springframework.bootspring-boot-starter-amqp
untuk menulis konfigurasi yml, konfigurasi maklumat asas
untuk menentukan suis, baris gilir dan Kelas konfigurasi perhubungan mengikat
disuntik ke dalam RabbitTemplate, memanggil kaedah dan melengkapkan penghantaran mesej
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <groupId>com.itheima</groupId> <artifactId>springboot-rabbitmq-consumer</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> </dependencies> </project>Mulakan kelas
package com.itheima.rabbitmq; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class); } }
spring:Kelas pemprosesan mendengar mesejTulis pendengar mesej com.itheima.rabbitmq .listener.MyListenerrabbitmq:
hos: localhost
port: 5672
virtual-host: /itcast
nama pengguna: heima
kata laluan: heima
package com.itheima.rabbitmq.listener; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component public class MyListener { /** * 监听某个队列的消息 * @param message 接收到的消息 */ @RabbitListener(queues = "item_queue") public void myListener1(String message){ System.out.println("消费者接收到的消息为:" + message); } }UjianBuat kelas ujian dalam projek pengeluar springboot-rabbitmq-producer dan hantar mesej:
package com.itheima.rabbitmq; import com.itheima.rabbitmq.config.RabbitMQConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class RabbitMQTest { @Autowired private RabbitTemplate rabbitTemplate; @Test public void test(){ rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.insert", "商品新增,routing key 为item.insert"); rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.update", "商品修改,routing key 为item.update"); rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.delete", "商品删除,routing key 为item.delete"); } }Mula-mula jalankan program ujian di atas (tukar dan Barisan boleh diisytiharkan dan diikat dahulu), dan kemudian pengguna dimulakan; sama ada mesej yang sepadan diterima pada konsol dalam projek pengguna springboot-rabbitmq-consumer. SpringBoot menyediakan cara untuk menyepadukan RabbitMQ dengan cepat Maklumat asas dikonfigurasikan dalam yml, mesin interaktif baris gilir dan hubungan mengikat dikonfigurasikan menggunakan kacang dalam kelas konfigurasiPengeluaran Akhir terus menyuntik RabbitTemplate untuk melengkapkan penghantaran mesejPenghujung pengguna secara langsung menggunakan @RabbitListener untuk melengkapkan penerimaan mesej
Atas ialah kandungan terperinci Apakah kaedah SpringBoot untuk menyepadukan baris gilir mesej RabbitMQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!