Bagikan melalui


Menggunakan Azure Event Grid di Musim Semi

Artikel ini memperlihatkan kepada Anda cara menggunakan Azure Event Grid untuk mengirim peristiwa ke topik dan menggunakan antrean Bus Layanan sebagai Penanganan Aktivitas untuk diterima dalam aplikasi Spring Boot.

Layanan Azure Event Grid adalah layanan distribusi pesan Sub pesan Pub yang sangat dapat diskalakan dan dikelola sepenuhnya yang menawarkan pola konsumsi pesan fleksibel menggunakan protokol MQTT dan HTTP.

Prasyarat

Berlangganan topik kustom

Gunakan langkah-langkah berikut untuk membuat langganan peristiwa untuk memberi tahu Event Grid untuk mengirim peristiwa ke antrean Bus Layanan:

  1. Di portal Azure, navigasikan ke instans Topik Event Grid Anda.
  2. Pilih Langganan Peristiwa pada toolbar.
  3. Pada halaman Buat Langganan Peristiwa, masukkan nilai nama untuk langganan peristiwa.
  4. Untuk Jenis Titik Akhir, pilih antrean Bus Layanan.
  5. Pilih Pilih titik akhir lalu pilih instans antrean Bus Layanan yang Anda buat sebelumnya.

Mengirim peristiwa oleh Azure Event Grid dan menerima oleh Azure Bus Layanan Queue

Dengan sumber daya Azure Event Grid, Anda dapat mengirim acara menggunakan Spring Cloud Azure Event Grid. Dengan sumber daya Azure Bus Layanan Queue sebagai penanganan aktivitas, Anda dapat menerima acara menggunakan Spring Cloud Azure Stream Binder untuk Bus Layanan.

Untuk menginstal modul Spring Cloud Azure Event Grid Starter dan modul Bus Layanan 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>5.12.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Catatan

    Jika Anda menggunakan Spring Boot 2.x, pastikan untuk mengatur versi ke spring-cloud-azure-dependencies4.18.0. Bill of Material (BOM) ini harus dikonfigurasi di bagian <dependencyManagement> 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 mana yang 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 Bus Layanan Spring Cloud Azure Stream Binder:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId>
    </dependency>
    

Kodekan aplikasi

Gunakan langkah-langkah berikut untuk mengonfigurasi aplikasi Anda untuk mengirim peristiwa dengan menggunakan Event Grid dan terima dengan menggunakan antrean Bus Layanan.

  1. Konfigurasikan Azure Event Grid dan kredensial Bus Layanan 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: false
    
  2. Edit file kelas startup untuk menampilkan konten berikut. Kode ini menghasilkan penyelesaian.

    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());
        }
    }
    
    
  3. 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"'
    

Sebarkan 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 Menyebarkan aplikasi pertama Anda ke Azure Spring Apps.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Spring dan Azure, lanjutkan ke pusat dokumentasi Spring di Azure.