Aracılığıyla paylaş


Azure Event Grid'i Spring'de kullanma

Bu makalede Azure Event Grid kullanarak bir konuya olay gönderme ve Service Bus Kuyruğu'nun Spring Boot uygulamasında almak üzere Olay İşleyicisi olarak kullanma adımları gösterilmektedir.

Azure Event Grid hizmeti, MQTT ve HTTP protokollerini kullanarak esnek ileti tüketimi desenleri sunan yüksek oranda ölçeklenebilir, tam olarak yönetilen bir Pub Alt ileti dağıtım hizmetidir.

Önkoşullar

  • Azure aboneliği - ücretsiz bir tane oluşturun.

  • Java Development Kit (JDK) sürüm 8 veya üzeri.

  • Apache Maven, 3.0 veya üzeri sürüm.

  • Bir Event Grid Konu örneği. Eğer yoksa, Azure Event Grid'de özel bir konu veya etki alanı oluşturmak için 'a bakın.

  • Service Bus Kuyruğu örneği. Bir kuyruğunuz yoksa bkz. Azure portalında kuyruk oluşturma.

  • Spring Boot uygulaması. Eğer yoksa, Spring Initializrile bir Maven projesi oluşturun. Maven Project'ü seçtiğinizden ve Java sürüm 8 veya üzerini kullandığınızdan emin olun.

Özel konuya abone olma

Event Grid'e Service Bus Kuyruğuna olay göndermesini bildirmek üzere bir olay aboneliği oluşturmak için aşağıdaki adımları kullanın:

  1. Azure portalında Event Grid Konu örneğine gidin.
  2. Araç çubuğunda Olay Abonelikleri seçin.
  3. Olay Aboneliği Oluştur sayfasında, olay aboneliği için bir adı değer girin.
  4. Uç Nokta Türüiçin Service Bus Kuyruğuseçin.
  5. Bir uç nokta seçin ve daha önce oluşturduğunuz Service Bus Kuyruğu örneğini seçin.

Azure Event Grid ile olay gönderip Azure Service Bus Kuyruğu ile alma

Azure Event Grid kaynağıyla Spring Cloud Azure Event Grid kullanarak bir olay gönderebilirsiniz. Azure Service Bus Kuyruğu kaynağını bir olay işleyicisi olarak kullanarak, Spring Cloud Azure Stream Binder for Service Bus aracılığıyla olayı alabilirsiniz.

Spring Cloud Azure Event Grid Starter modülünü ve Spring Cloud Azure Stream Binder Service Bus modülünü yüklemek için pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:

  • Spring Cloud Azure Ürün Reçetesi (BOM):

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>6.0.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 3.0.x-3.4.x kullanıyorsanız, spring-cloud-azure-dependencies sürümünü 5.23.0 olarak ayarladığınızdan emin olun.

    Spring Boot 2.x kullanıyorsanız, spring-cloud-azure-dependencies sürümünü 4.20.0olarak ayarladığınızdan emin olun.

    Bu Ürün Reçetesi (BOM), <dependencyManagement> dosyanızın bölümünde yapılandırılmalıdır. Bu, tüm Spring Cloud Azure bağımlılıklarının aynı sürümü kullanmasını sağlar.

    Bu malzeme listesi için kullanılan sürüm hakkında daha fazla bilgi için bkz. Hangi Spring Cloud Azure Sürümünü Kullanmalıyım.

  • Spring Cloud Azure Event Grid Starter bileşeni:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-eventgrid</artifactId>
    </dependency>
    
  • Spring Cloud Azure Stream Binder Service Bus bileşeni:

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

Uygulamayı kodlayın

Uygulamanızı Event Grid kullanarak olay gönderecek ve Service Bus Kuyruğu kullanarak alacak şekilde yapılandırmak için aşağıdaki adımları kullanın.

  1. Aşağıdaki örnekte gösterildiği gibi application.yaml yapılandırma dosyasında Azure Event Grid ve Service Bus kimlik bilgilerini yapılandırın:

    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
    

    Not

    Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.

  2. Aşağıdaki içeriği göstermek için başlangıç sınıfı dosyasını düzenleyin. Bu kod tamamlamalar oluşturur.

    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. Uygulamayı başlatın. Uygulama başlatıldıktan sonra aşağıdaki örneğe benzer günlükler oluşturur:

    New event published: '"FirstName: John, LastName: James"'
    ...
    New event received: '"FirstName: John, LastName: James"'
    

Azure Spring Apps'e Yayınlama

Spring Boot uygulamasını yerel olarak çalıştırdığınıza göre artık uygulamayı üretim ortamına taşımanın zamanı geldi. Azure Spring Apps , kod değişikliği yapmadan Spring Boot uygulamalarını Azure'a dağıtmayı kolaylaştırır. Hizmet, geliştiricilerin kodlarına odaklanabilmesi için Spring uygulamalarının altyapısını yönetir. Azure Spring Apps kapsamlı izleme ve tanılama, yapılandırma yönetimi, hizmet bulma, CI/CD tümleştirmesi, mavi-yeşil dağıtımlar ve daha fazlasını kullanarak yaşam döngüsü yönetimi sağlar. Uygulamanızı Azure Spring Apps'e dağıtmak için bkz. İlk uygulamanızı Azure Spring Apps'e dağıtma.

Sonraki adımlar

Spring ve Azure hakkında daha fazla bilgi edinmek için Azure'da Spring belge merkezine geçin.

Spring geliştiricileri için Azure Spring Cloud Azure Event Grid örnekleri