Baris gilir mesej perkhidmatan mikro dan alat komunikasi tak segerak dilaksanakan dalam Java
Pengenalan:
Dalam era Internet hari ini, populariti seni bina perkhidmatan mikro telah menjadi fakta yang tidak dapat dipertikaikan. Dalam seni bina perkhidmatan mikro, baris gilir mesej dan komunikasi tak segerak adalah komponen utama yang sangat diperlukan. Artikel ini akan memperkenalkan cara menggunakan Java untuk melaksanakan baris gilir mesej perkhidmatan mikro dan alat komunikasi tak segerak serta memberikan contoh kod yang sepadan.
1. Barisan Mesej Perkhidmatan Mikro
1.1 Apakah baris gilir mesej?
Baris gilir mesej ialah kaedah komunikasi dipisahkan aplikasi yang mencapai gandingan longgar antara penghantar dan penerima dengan menghantar mesej ke baris gilir. Pengirim hanya perlu menghantar mesej ke baris gilir dan tidak peduli bagaimana mesej itu diproses. Penerima boleh mengalih keluar mesej secara tak segerak daripada baris gilir untuk diproses.
1.2 Pengenalan kepada RabbitMQ
RabbitMQ ialah sistem baris gilir mesej sumber terbuka yang menggunakan AMQP (Advanced Message Qeuing Protocol) sebagai protokol penghantaran mesej. Ia mempunyai kebolehpercayaan yang tinggi, berskala dan mekanisme penghalaan yang fleksibel, dan sangat sesuai untuk membina baris gilir mesej dalam seni bina perkhidmatan mikro.
1.3 Penggunaan RabbitMQ
1.3.1 Tambah kebergantungan
Mula-mula, tambahkan kebergantungan RabbitMQ dalam pom projek
Jalankan kelas Pengeluar dan Pengguna masing-masing, anda akan melihat mesej yang dihantar oleh Pengeluar. Pengguna.
2. Alat komunikasi tak segerak
2.1 Pengenalan kepada CompletableFutureCompletableFuture ialah kelas alat yang diperkenalkan di Java 8 untuk memproses tugas tak segerak. Ia boleh mengendalikan panggilan tak segerak dengan lebih mudah, mengelakkan pemprosesan panggilan balik yang menyusahkan, dan meningkatkan kecekapan pengaturcaraan serentak.
2.2.1 Mencipta tugas tak segerak
Gunakan bekalan kaedah statikAsync of CompletableFuture untuk mencipta tugasan tak segerak dengan nilai pulangan.
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.7.3</version> </dependency>2.2.2 Menggabungkan berbilang tugas tak segerak
CompletableFuture juga menyokong gabungan berbilang tugas tak segerak berdasarkan kebergantungan.
import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; public class Producer { private final static String QUEUE_NAME = "my_queue"; public static void main(String[] args) { try { // 创建连接工厂 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); // 创建连接 Connection connection = factory.newConnection(); // 创建通道 Channel channel = connection.createChannel(); // 声明队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); // 发送消息 String message = "Hello, RabbitMQ!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8")); System.out.println("Message sent: " + message); // 关闭连接 channel.close(); connection.close(); } catch (Exception e) { e.printStackTrace(); } } }
Rujukan:
Dokumentasi rasmi RabbitMQ: https://www.rabbitmq.com/documentation.html
Dokumentasi rasmi CompletableFuture: https://docs.oracle.com/javase/8/docs/api/java / util/concurrent/CompletableFuture.html
Atas ialah kandungan terperinci Barisan mesej mikroperkhidmatan dan alat komunikasi tak segerak dilaksanakan di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!