Mengintegrasikan RabbitMQ/Kafka
Konfigurasikan Spring WebSockets untuk menggunakan broker mesej luaran bagi komunikasi antara pelayan.
Mengintegrasikan RabbitMQ/Kafka ialah pelajaran WebSockets dan Sistem Masa Nyata dengan Spring percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.
Menskalakan dengan Broker Luaran
Apabila aplikasi WebSocket anda berjalan pada beberapa contoh pelayan, broker mesej dalam memori tidak mencukupi. Anda memerlukan broker mesej luaran untuk menyelaraskan mesej merentas semua contoh.
Ini memastikan mesej yang dihantar kepada satu pelayan boleh diterima oleh klien yang bersambung kepada *mana-mana* pelayan dalam kelompok anda, sekali gus membolehkan penskalaan mendatar sebenar.
Jambatan Broker Spring
Spring menyediakan abstraksi berkuasa yang dipanggil STOMP Broker Relay. Ini membolehkan aplikasi Spring WebSocket anda menyerahkan penghalaan mesej kepada broker mesej luaran yang serasi dengan STOMP.
Aplikasi anda bertindak sebagai klien kepada broker luaran, dengan menghantar dan menerima mesej bagi pihak klien WebSocket yang bersambung.
RabbitMQ: Broker STOMP
RabbitMQ ialah broker mesej sumber terbuka yang popular dan boleh dikonfigurasikan untuk bertindak sebagai broker STOMP dengan mengaktifkan pemalam STOMPnya. Hal ini menjadikannya pilihan yang sangat baik untuk menskalakan aplikasi Spring WebSocket.
- Pengeluar: Aplikasi Spring anda menghantar mesej kepada RabbitMQ.
- Pengguna: Aplikasi Spring anda menerima mesej daripada RabbitMQ.
- Pemalam STOMP: Menterjemahkan bingkai STOMP WebSocket kepada AMQP dan sebaliknya.
Tambah Kebergantungan RabbitMQ
Untuk membolehkan Spring berkomunikasi dengan RabbitMQ, anda perlu menambahkan kebergantungan spring-boot-starter-websocket dan spring-boot-starter-amqp pada projek anda dalam build.gradle atau pom.xml.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation 'org.springframework.boot:spring-boot-starter-amqp'
// ... other dependencies
}Konfigurasikan Geganti Broker RabbitMQ
Dalam WebSocketConfig anda, gunakan enableStompBrokerRelay() untuk memberitahu Spring supaya menggunakan pemalam STOMP RabbitMQ sebagai broker mesej. Pastikan anda menetapkan hos, port dan kelayakan yang betul.
Cuba jalankan aplikasi Spring Boot lengkap ini:
package com.coddykit.websocket;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
System.out.println("Spring Boot WebSocket app with RabbitMQ broker relay started.");
System.out.println("Ensure RabbitMQ with STOMP plugin is running on localhost:61613.");
}
@Configuration
@EnableWebSocketMessageBroker
static class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic", "/queue")
.setRelayHost("localhost") // Or your RabbitMQ host
.setRelayPort(61613) // Default STOMP port for RabbitMQ plugin
.setClientLogin("guest")
.setClientPasscode("guest");
config.setApplicationDestinationPrefixes("/app");
config.setUserDestinationPrefix("/user");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").withSockJS();
}
}
}Kafka untuk Penyegerakan Antara Pelayan
Walaupun RabbitMQ boleh bertindak sebagai geganti broker STOMP secara langsung, Apache Kafka biasanya digunakan untuk jenis komunikasi antara pelayan yang berbeza dalam seni bina WebSocket yang boleh diskalakan.
Daripada menjadikan Kafka sebagai broker STOMP langsung, tika Spring WebSocket individu mungkin menggunakan Kafka untuk menyiarkan peristiwa atau mesej dalaman kepada tika lain dalam kelompok.
Peranan Kafka dalam Kelompok
Bayangkan anda mempunyai beberapa pelayan WebSocket. Apabila mesej tiba di Pelayan A dan penerimanya disambungkan kepada Pelayan B, Pelayan A boleh menerbitkan mesej itu kepada topik Kafka.
Pelayan B (dan semua pelayan lain) boleh menggunakan mesej daripada topik ini, mengenal pasti mesej untuk kliennya dan memajukannya. Hal ini menjadikan Kafka bahagian belakang yang sangat baik untuk penyelarasan mesej teragih.
Tambah Kebergantungan Kafka
Untuk membolehkan Spring berinteraksi dengan Kafka bagi pemesejan bahagian belakang, anda memerlukan kebergantungan spring-kafka.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation 'org.springframework.kafka:spring-kafka'
// ... other dependencies
}Sifat Aplikasi Kafka
Apabila menggunakan Kafka untuk pemesejan antara pelayan, anda perlu mengkonfigurasikan butiran broker Kafka serta sifat pengguna dan pengeluar dalam fail application.properties anda.
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.group-id=websocket-cluster
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializerSemakan Konfigurasi Broker
Anda sedang menyediakan aplikasi Spring Boot WebSocket untuk menggunakan broker mesej luaran yang serasi dengan STOMP bagi menyokong beberapa tika pelayan. Apakah kaedah dalam WebSocketMessageBrokerConfigurer yang digunakan terutamanya untuk mengkonfigurasikan Spring supaya bersambung kepada broker luaran ini?
Imbas Kembali: Broker Luaran
Kita telah mempelajari bahawa broker mesej luaran amat penting untuk menskalakan aplikasi WebSocket. enableStompBrokerRelay() Spring memudahkan penyepaduan dengan broker seperti RabbitMQ (apabila pemalam STOMPnya diaktifkan).
Bagi Kafka, walaupun ia bukan geganti broker STOMP secara langsung, Kafka berfungsi sebagai bahagian belakang yang berkuasa untuk komunikasi antara pelayan, membolehkan tika WebSocket menyelaras dan mengagihkan mesej merentasi kelompok serta menyokong penskalaan yang kukuh.
Pelajari WebSockets dan Sistem Masa Nyata dengan Spring dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Mengintegrasikan RabbitMQ/Kafka” percuma?
Ya — teks penuh “Mengintegrasikan RabbitMQ/Kafka” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus WebSockets dan Sistem Masa Nyata dengan Spring, tingkat taraf kepada CoddyKit PRO. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengintegrasikan RabbitMQ/Kafka”?
Konfigurasikan Spring WebSockets untuk menggunakan broker mesej luaran bagi komunikasi antara pelayan. Anda berlatih WebSockets dan Sistem Masa Nyata dengan Spring menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan WebSockets dan Sistem Masa Nyata dengan Spring?
Tiada pengalaman terdahulu diperlukan. Pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Mengintegrasikan RabbitMQ/Kafka” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran WebSockets dan Sistem Masa Nyata dengan Spring ini?
Ya. Setiap pelajaran WebSockets dan Sistem Masa Nyata dengan Spring menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Keperluan Broker Mesej Luaran
- Mengintegrasikan RabbitMQ/Kafka
- Seni Bina WebSocket Teragih
- Mengkonfigurasi Geganti Broker STOMP