Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menunjukkan kepada Anda cara menggunakan Azure Event Grid untuk mengirim event ke suatu topik dan menggunakan antrean Service Bus sebagai Event Handler untuk menerima di dalam aplikasi Spring Boot.
Layanan Azure Event Grid adalah layanan distribusi pesan Pub Sub yang sangat dapat diskalakan dan dikelola sepenuhnya yang menawarkan pola konsumsi pesan yang fleksibel menggunakan protokol MQTT dan HTTP.
Prasyarat
Langganan Azure - buat langganan secara gratis.
Java Development Kit (JDK) versi 8 atau yang lebih tinggi.
Apache Maven, versi 3.0 atau lebih tinggi.
Instance dari Topik Event Grid. Jika Anda tidak memilikinya, lihat Buat topik kustom atau domain di Azure Event Grid.
Sebuah Instans Antrean Service Bus. Jika Anda tidak memilikinya, lihat Buat antrean di portal Azure.
Aplikasi Spring Boot. Jika Anda tidak memilikinya, buat proyek Maven dengan Spring Initializr. Pastikan untuk memilih ProyekMaven dan pilih Java versi 8 atau yang lebih tinggi.
Berlangganan topik kustom
Gunakan langkah-langkah berikut untuk membuat langganan peristiwa untuk memberi tahu Event Grid untuk mengirim peristiwa ke antrean Service Bus:
- Di portal Azure, navigasikan ke instans Topik Event Grid Anda.
- Pilih Langganan Peristiwa pada toolbar.
- Pada halaman Buat Langganan Peristiwa, masukkan nilai nama untuk langganan peristiwa.
- Untuk Jenis Endpoint, pilih Service Bus Queue.
- Pilih Pilih titik akhir lalu pilih instans antrean Service Bus yang Anda buat sebelumnya.
Kirimkan sebuah event dengan Azure Event Grid dan terima melalui antrean Azure Service Bus
Dengan sumber daya Azure Event Grid, Anda dapat mengirim acara menggunakan Spring Cloud Azure Event Grid. Dengan sumber daya antrean Azure Service Bus sebagai penangan peristiwa, Anda dapat menerima peristiwa menggunakan Spring Cloud Azure Stream Binder untuk Service Bus.
Untuk menginstal modul Spring Cloud Azure Event Grid Starter dan modul Service Bus Spring Cloud Azure Stream Binder, tambahkan dependensi berikut ke file pom.xml Anda:
Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Nota
Jika Anda menggunakan Spring Boot 4.0.x, pastikan untuk mengatur versi ke
spring-cloud-azure-dependencies7.1.0.Jika Anda menggunakan Spring Boot 3.5.x, pastikan untuk mengatur versi ke
spring-cloud-azure-dependencies6.1.0.Jika Anda menggunakan Spring Boot 3.1.x-3.5.x, pastikan untuk mengatur versi ke
spring-cloud-azure-dependencies5.25.0.Jika Anda menggunakan Spring Boot 2.x, pastikan untuk mengatur versi
spring-cloud-azure-dependencieske4.20.0.Bill of Material (BOM) ini harus dikonfigurasi di bagian
<dependencyManagement>dari file pom.xml Anda. Ini memastikan bahwa semua dependensi Spring Cloud Azure menggunakan versi yang sama.Untuk informasi selengkapnya tentang versi yang digunakan untuk BOM ini, lihat Versi Spring Cloud Azure Harus Saya Gunakan.
Artefak Spring Cloud Azure Event Grid Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>Artefak Spring Cloud Azure Stream Binder Service Bus
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Kode aplikasi
Gunakan langkah-langkah berikut untuk mengonfigurasi aplikasi Anda untuk mengirim peristiwa dengan menggunakan Event Grid dan menerima dengan menggunakan antrean Service Bus.
Konfigurasikan kredensial Azure Event Grid dan Service Bus dalam file konfigurasi application.yaml, seperti yang ditunjukkan dalam contoh berikut:
spring: cloud: azure: eventgrid: endpoint: ${AZURE_EVENTGRID_ENDPOINT} key: ${AZURE_EVENTGRID_KEY} servicebus: connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING} function: definition: consume stream: bindings: consume-in-0: destination: ${AZURE_SERVICEBUS_QUEUE_NAME} servicebus: bindings: consume-in-0: consumer: auto-complete: falseNota
Microsoft merekomendasikan penggunaan alur autentikasi paling aman yang tersedia. Alur autentikasi yang dijelaskan dalam prosedur ini, seperti untuk database, cache, olahpesan, atau layanan AI, memerlukan tingkat kepercayaan yang sangat tinggi dalam aplikasi dan membawa risiko yang tidak ada dalam alur lain. Gunakan alur ini hanya ketika opsi yang lebih aman, seperti identitas terkelola untuk koneksi tanpa kata sandi atau tanpa kunci, tidak layak. Untuk operasi komputer lokal, lebih suka identitas pengguna untuk koneksi tanpa kata sandi atau tanpa kunci.
Edit file kelas startup untuk menampilkan konten berikut. Kode ini menghasilkan pelengkapan.
import com.azure.core.util.BinaryData; import com.azure.messaging.eventgrid.EventGridEvent; import com.azure.messaging.eventgrid.EventGridPublisherClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.messaging.Message; import java.util.List; import java.util.function.Consumer; @SpringBootApplication public class EventGridSampleApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventGridSampleApplication.class); @Autowired EventGridPublisherClient<EventGridEvent> client; public static void main(String[] args) { SpringApplication.run(EventGridSampleApplication.class, args); } @Bean public Consumer<Message<String>> consume() { return message -> { List<EventGridEvent> eventData = EventGridEvent.fromString(message.getPayload()); eventData.forEach(event -> { LOGGER.info("New event received: '{}'", event.getData()); }); }; } @Override public void run(String... args) throws Exception { String str = "FirstName: John, LastName: James"; EventGridEvent event = new EventGridEvent("A user is created", "User.Created.Text", BinaryData.fromObject(str), "0.1"); client.sendEvent(event); LOGGER.info("New event published: '{}'", event.getData()); } }Mulai aplikasi. Setelah diluncurkan, aplikasi menghasilkan log yang mirip dengan contoh berikut:
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Menyebarkan ke Azure Spring Apps
Sekarang setelah Anda memiliki aplikasi Spring Boot yang berjalan secara lokal, saatnya untuk memindahkannya ke produksi. Azure Spring Apps memudahkan penyebaran aplikasi Spring Boot ke Azure tanpa perubahan kode apa pun. Layanan ini mengelola infrastruktur aplikasi Spring sehingga pengembang dapat fokus pada kode mereka. Azure Spring Apps menyediakan manajemen siklus hidup menggunakan pemantauan dan diagnostik yang komprehensif, manajemen konfigurasi, penemuan layanan, integrasi CI/CD, penyebaran biru-hijau, dan banyak lagi. Untuk menyebarkan aplikasi Anda ke Azure Spring Apps, lihat Deploy aplikasi pertama Anda ke Azure Spring Apps.
Langkah berikutnya
Untuk mempelajari lebih lanjut tentang Spring dan Azure, lanjutkan ke pusat dokumentasi Spring on Azure.