Spring uygulamalarında Event Hubs kullanma

Bu makalede, Spring Framework ile oluşturulmuş Java uygulamalarda Azure Event Hubs nasıl kullanılacağı gösterilmektedir.

Azure Event Hubs büyük bir veri akışı platformu ve olay alımı hizmetidir. Saniyede milyonlarca olayı alabilir ve işleyebilir. Bir olay hub’ına gönderilen veriler, herhangi bir gerçek zamanlı analiz sağlayıcısı ve işlem grubu oluşturma/depolama bağdaştırıcıları kullanılarak dönüştürülüp depolanabilir.

Spring Cloud Azure, Spring çerçevelerini kullanarak Event Hubs'a ileti göndermek ve onlardan ileti almak için çeşitli modüller sağlar.

Aşağıdaki modülleri bağımsız olarak kullanabilir veya farklı kullanım örnekleri için birleştirebilirsiniz:

Önkoşullar

Not

Hesabınıza kaynaklara erişim vermek için, Azure Event Hubs'da kullanmakta olduğunuz Microsoft Entra hesabına Azure Event Hubs Data Receiver ve Azure Event Hubs Data Sender rolünü atayın. Ardından, Azure Depolama hesabında, kullanmakta olduğunuz Microsoft Entra hesabına Storage Blob Data Contributor rolünü atayın. Erişim rolleri verme hakkında daha fazla bilgi için bkz. Azure portalını kullanarak Azure rollerini atama ve Microsoft Entra ID kullanarak Event Hubs kaynaklarına erişimi yetkilendirme.

Önemli

Bu öğreticideki adımları tamamlamak için Spring Boot sürüm 2.5 veya üzeri gereklidir.

Yerel ortamınızı hazırlama

Bu öğreticide, yapılandırmalar ve kodlarda herhangi bir kimlik doğrulama işlemi yoktur. Ancak, bir Azure hizmetine bağlanmak için kimlik doğrulaması gerekir. Kimlik doğrulamasını tamamlamak için Azure Kimliği istemci kitaplığını kullanmanız gerekir. Spring Cloud Azure, Azure Kimlik kitaplığının herhangi bir kod değişikliği yapmadan kimlik bilgilerini almanıza yardımcı olmak için sağladığı DefaultAzureCredential kullanır.

DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel veya üretim ortamları gibi) farklı kimlik doğrulama yöntemleri kullanmasını sağlar. Daha fazla bilgi için Authenticate Azure barındırılan Java uygulamalarınınDefaultAzureCredential bölümüne bakın.

Yerel geliştirme ortamlarında kimlik doğrulamasını tamamlamak için Azure CLI, IntelliJ veya diğer yöntemleri kullanmak için bkz. Java geliştirme ortamlarında Azure kimlik doğrulaması. Azure barındırma ortamlarında kimlik doğrulamasını tamamlamak için yönetilen kimlik kullanmanızı öneririz. Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nelerdir?

Spring Cloud Azure Event Hubs Starter kullanma

Spring Cloud Azure Event Hubs Starter modülü, Spring Boot çerçevesiyle Event Hubs Java istemci kitaplığı içeri aktarır. Spring Cloud Azure ve Azure SDK birlikte, birbirini dışlayan olmayan bir düzende kullanabilirsiniz. Bu nedenle, Spring uygulamanızda Event Hubs Java istemci API'sini kullanmaya devam edebilirsiniz.

Bağımlılık ekleme

Spring Cloud Azure Event Hubs Starter 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>7.4.0</version>
           <type>pom</type>
           <scope>import</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 4.0.x kullanıyorsanız, sürümünü olarak 7.4.0ayarlayınspring-cloud-azure-dependencies.

    Spring Boot 3.5.x kullanıyorsanız, sürümünü olarak 6.5.0ayarlayınspring-cloud-azure-dependencies.

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

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

    Bu Parça Listesi (BOM), <dependencyManagement> bölümünde pom.xml dosyanızda 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 ürün reçetesi 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 Hubs bileşeni:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-eventhubs</artifactId>
    </dependency>
    

İleti göndermek ve almak için uygulamayı kodlayın

Bu kılavuzda, Event Hubs Java istemcilerini spring uygulaması bağlamında nasıl kullanacağınız öğretildi. Burada aşağıdaki iki seçeneği tanıtacağız:

  • Spring Boot otomatik yapılandırmayı kullanın ve Spring bağlamından kullanıma sunulan istemcileri kullanın (önerilir).
  • Programatik olarak istemciyi oluşturun.

Spring IoC kapsayıcısından istemci çekirdeklerini otomatik olarak döndürmenin yolu, Event Hubs istemcileriyle geliştirme yaparken size daha esnek ve verimli bir deneyim sunabilecek aşağıdaki avantajlara sahiptir:

  • Farklı ortamlarda aynı uygulama koduyla çalışabilmeniz için dışlanmış yapılandırmayı uygular.
  • Oluşturucu desenini öğrenme ve bu istemciyi uygulama bağlamına kaydetme işlemini Spring Boot çerçevesine devredebilirsiniz. Bu temsilci, istemcileri kendi iş gereksinimlerinizle nasıl kullanacağınıza odaklanmanızı sağlar.
  • Uygulamanızın ve iç bileşenlerin durumunu ve durumunu incelemek için sistem durumu göstergesini kolay bir şekilde kullanabilirsiniz.

Aşağıdaki bölümlerde, EventProcessorClient ve EventHubProducerClient'i iki alternatifle nasıl kullanacağınızı gösteren kod örnekleri verilmiştir.

Not

Event Hubs için Azure Java SDK,Event Hubs ile etkileşime geçmek için birden çok istemci sağlar. Başlatıcı ayrıca tüm Event Hubs istemcileri ve istemci oluşturucuları için otomatik yapılandırma sağlar. Bu makalede yalnızca EventProcessorClient ve EventHubProducerClient örnek olarak kullanılır.

Spring Boot Otomatik Yapılandırmayı Kullanma

Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için aşağıdaki adımları kullanarak uygulamayı yapılandırın:

  1. Event Hubs ad alanınızı ve olay hub'ı adınızı yapılandırmak için aşağıdaki özellik ayarlarını kullanın:

    spring.cloud.azure.eventhubs.namespace=<your event-hubs-namespace>
    spring.cloud.azure.eventhubs.event-hub-name=<your-event-hub-name>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name=<your-storage-account-name>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name=<your-storage-account-container-name>
    spring.cloud.azure.eventhubs.processor.consumer-group=$Default
    
  2. Aşağıdaki örnekte gösterildiği gibi yeni bir EventHubProcessorClientConfiguration Java sınıfı oluşturun. Bu sınıf, ileti ve hata işleyicisini kaydetmek için EventProcessorClient kullanılarak kullanılır.

    import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsErrorHandler;
    import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsRecordMessageListener;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class EventHubProcessorClientConfiguration {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(EventHubProcessorClientConfiguration.class);
    
        @Bean
        EventHubsRecordMessageListener processEvent() {
            return eventContext->LOGGER.info("Processing event from partition {} with sequence number {} with body: {}",
                eventContext.getPartitionContext().getPartitionId(), eventContext.getEventData().getSequenceNumber(),
                eventContext.getEventData().getBodyAsString());
        }
    
        @Bean
        EventHubsErrorHandler processError() {
            return errorContext->LOGGER.info("Error occurred in partition processor for partition {}, {}",
                errorContext.getPartitionContext().getPartitionId(),
                errorContext.getThrowable());
        }
    
    }
    
  3. Spring uygulamanıza EventProcessorClient ve EventHubProducerClient ekleyin ve iletileri göndermek ve almak için ilgili API'leri çağırın, aşağıdaki örnekte gösterildiği gibi.

    import com.azure.messaging.eventhubs.EventData;
    import com.azure.messaging.eventhubs.EventHubProducerClient;
    import com.azure.messaging.eventhubs.EventProcessorClient;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import java.util.Collections;
    import java.util.concurrent.TimeUnit;
    
    @SpringBootApplication
    public class EventHubClientApplication implements CommandLineRunner {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(EventHubClientApplication.class);
        private final EventHubProducerClient eventHubProducerClient;
        private final EventProcessorClient eventProcessorClient;
    
        public EventHubClientApplication(EventHubProducerClient eventHubProducerClient,
                                         EventProcessorClient eventProcessorClient) {
            this.eventHubProducerClient = eventHubProducerClient;
            this.eventProcessorClient = eventProcessorClient;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(EventHubClientApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception {
            eventProcessorClient.start();
            // Wait for the processor client to be ready
            TimeUnit.SECONDS.sleep(10);
    
            eventHubProducerClient.send(Collections.singletonList(new EventData("Hello World")));
            LOGGER.info("Successfully sent a message to Event Hubs.");
            eventHubProducerClient.close();
            LOGGER.info("Skip stopping and closing the processor since the processor may not complete the receiving process yet.");
        }
    
    }
    
  4. Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler gösterilir:

    Successfully sent a message to Event Hubs.
    ...
    Processing event from partition 0 with sequence number 0 with body: Hello World
    ...
    Stopping and closing the processor.
    

İstemciyi programatik olarak oluştur

İstemci çekirdeklerini kendiniz oluşturabilirsiniz, ancak işlem karmaşıktır. Spring Boot uygulamalarında özellikleri yönetmeniz, oluşturucu desenini öğrenmeniz ve istemciyi Spring uygulama bağlamınıza kaydetmeniz gerekir. Aşağıdaki adımlar bunu nasıl yapacağınızı gösterir:

  1. Aşağıdaki örnekte gösterildiği gibi yeni bir EventHubClientConfiguration Java sınıfı oluşturun. Bu sınıf, EventProcessorClient ve EventHubProducerClient bean'lerini bildirmek için kullanılır. <your event-hubs-namespace>, <your-event-hub-name>, <your-storage-account-name> ve <your-storage-account-container-name> yer tutucularını gerçek değerlerinizle değiştirdiğinizden emin olun.

    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.azure.messaging.eventhubs.EventHubClientBuilder;
    import com.azure.messaging.eventhubs.EventHubProducerClient;
    import com.azure.messaging.eventhubs.EventProcessorClient;
    import com.azure.messaging.eventhubs.EventProcessorClientBuilder;
    import com.azure.messaging.eventhubs.checkpointstore.blob.BlobCheckpointStore;
    import com.azure.messaging.eventhubs.models.ErrorContext;
    import com.azure.messaging.eventhubs.models.EventContext;
    import com.azure.storage.blob.BlobContainerAsyncClient;
    import com.azure.storage.blob.BlobContainerClientBuilder;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class EventHubClientConfiguration {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(EventHubClientConfiguration.class);
        private static final String EVENT_HUB_FULLY_QUALIFIED_NAMESPACE = "<your event-hubs-namespace>.servicebus.windows.net";
        private static final String EVENT_HUB_NAME = "<your-event-hub-name>";
        private static final String CONSUMER_GROUP = "$Default";
        private static final String STORAGE_ACCOUNT_ENDPOINT = "https://<your-storage-account-name>.blob.core.windows.net";
        private static final String STORAGE_CONTAINER_NAME = "<your-storage-account-container-name>";
    
        @Bean
        EventHubClientBuilder eventHubClientBuilder() {
            return new EventHubClientBuilder().credential(EVENT_HUB_FULLY_QUALIFIED_NAMESPACE, EVENT_HUB_NAME,
                new DefaultAzureCredentialBuilder()
                    .build());
        }
    
        @Bean
        BlobContainerClientBuilder blobContainerClientBuilder() {
            return new BlobContainerClientBuilder().credential(new DefaultAzureCredentialBuilder()
                                                       .build())
                                                   .endpoint(STORAGE_ACCOUNT_ENDPOINT)
                                                   .containerName(STORAGE_CONTAINER_NAME);
        }
    
        @Bean
        BlobContainerAsyncClient blobContainerAsyncClient(BlobContainerClientBuilder blobContainerClientBuilder) {
            return blobContainerClientBuilder.buildAsyncClient();
        }
    
        @Bean
        EventProcessorClientBuilder eventProcessorClientBuilder(BlobContainerAsyncClient blobContainerAsyncClient) {
            return new EventProcessorClientBuilder().credential(EVENT_HUB_FULLY_QUALIFIED_NAMESPACE, EVENT_HUB_NAME,
                                                        new DefaultAzureCredentialBuilder()
                                                            .build())
                                                    .consumerGroup(CONSUMER_GROUP)
                                                    .checkpointStore(new BlobCheckpointStore(blobContainerAsyncClient))
                                                    .processEvent(EventHubClientConfiguration::processEvent)
                                                    .processError(EventHubClientConfiguration::processError);
        }
    
        @Bean
        EventHubProducerClient eventHubProducerClient(EventHubClientBuilder eventHubClientBuilder) {
            return eventHubClientBuilder.buildProducerClient();
    
        }
    
        @Bean
        EventProcessorClient eventProcessorClient(EventProcessorClientBuilder eventProcessorClientBuilder) {
            return eventProcessorClientBuilder.buildEventProcessorClient();
        }
    
        public static void processEvent(EventContext eventContext) {
            LOGGER.info("Processing event from partition {} with sequence number {} with body: {}",
                eventContext.getPartitionContext().getPartitionId(), eventContext.getEventData().getSequenceNumber(),
                eventContext.getEventData().getBodyAsString());
        }
    
        public static void processError(ErrorContext errorContext) {
            LOGGER.info("Error occurred in partition processor for partition {}, {}",
                errorContext.getPartitionContext().getPartitionId(),
                errorContext.getThrowable());
        }
    
    }
    
  2. Spring uygulamanıza EventProcessorClient ve EventHubProducerClient enjekte edin, aşağıdaki örnekte gösterildiği gibi.

    import com.azure.messaging.eventhubs.EventData;
    import com.azure.messaging.eventhubs.EventHubProducerClient;
    import com.azure.messaging.eventhubs.EventProcessorClient;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import java.util.Collections;
    import java.util.concurrent.TimeUnit;
    
    @SpringBootApplication
    public class EventHubClientApplication implements CommandLineRunner {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(EventHubClientApplication.class);
        private final EventHubProducerClient eventHubProducerClient;
        private final EventProcessorClient eventProcessorClient;
    
        public EventHubClientApplication(EventHubProducerClient eventHubProducerClient,
                                         EventProcessorClient eventProcessorClient) {
            this.eventHubProducerClient = eventHubProducerClient;
            this.eventProcessorClient = eventProcessorClient;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(EventHubClientApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception {
            eventProcessorClient.start();
            // Wait for the processor client to be ready
            TimeUnit.SECONDS.sleep(10);
    
            eventHubProducerClient.send(Collections.singletonList(new EventData("Hello World")));
            LOGGER.info("Successfully sent a message to Event Hubs.");
            eventHubProducerClient.close();
            LOGGER.info("Stopping and closing the processor");
            eventProcessorClient.stop();
        }
    
    }
    
  3. Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler gösterilir:

    Successfully sent a message to Event Hubs.
    ...
    Processing event from partition 0 with sequence number 0 with body: Hello World
    ...
    Stopping and closing the processor.
    

Aşağıdaki listede bu kodun neden esnek veya zarif olmadığını gösteren bazı nedenler bulunmaktadır:

  • Event Hubs ad alanı ve olay hub'ı adı sabit kodlanmıştır.
  • Spring ortamından yapılandırmaları almak için kullanıyorsanız@Value, application.properties dosyanızda IDE ipuçlarına sahip olamazsınız.
  • Mikro hizmet senaryonuz varsa, kodu her projede yinelemeniz gerekir ve hata yapmak kolaydır ve tutarlı olmak zordur.

Neyse ki Spring Cloud Azure ile istemci çekirdeklerini kendiniz oluşturmak gerekli değildir. Bunun yerine, bunları doğrudan ekleyebilir ve depolama kuyruğu yapılandırmak için zaten bildiğiniz yapılandırma özelliklerini kullanabilirsiniz. Daha fazla bilgi için bkz. Spring Cloud Azure yapılandırması.

Spring Cloud Azure, farklı senaryolar için aşağıdaki genel yapılandırmaları da sağlar. Daha fazla bilgi için Spring Cloud Azure yapılandırması Azure Hizmet SDK'ları için Global yapılandırması bölümüne bakın.

  • Vekil sunucu seçenekleri.
  • Yeniden deneme seçenekleri.
  • AMQP aktarım istemcisi seçenekleri.

Ayrıca farklı Azure bulutlara da bağlanabilirsiniz. Daha fazla bilgi için bkz. Farklı Azure bulutlarına bağlanma.

Azure Event Hubs ve Spring Messaging Kullanımı

Spring Messaging Azure Event Hubs modülü, Event Hubs ile Spring Messaging çerçevesi için destek sağlar.

Spring Messaging Azure Event Hubs kullanıyorsanız aşağıdaki özellikleri kullanabilirsiniz:

  • EventHubsTemplate: Event Hubs'a asenkron ve senkron mesaj gönderin.
  • @EventHubsListener: Bir yöntemi, hedefteki bir Event Hubs mesaj dinleyicisinin hedefi olarak belirleyin.

Bu kılavuzda Spring Messaging Azure Event Hubs kullanarak Event Hubs'a ileti gönderme ve bu iletilerden ileti alma işlemleri gösterilmektedir.

Bağımlılık ekleme

Spring Messaging Azure Event Hubs 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>7.4.0</version>
           <type>pom</type>
           <scope>import</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 4.0.x kullanıyorsanız, sürümünü olarak 7.4.0ayarlayınspring-cloud-azure-dependencies.

    Spring Boot 3.5.x kullanıyorsanız, sürümünü olarak 6.5.0ayarlayınspring-cloud-azure-dependencies.

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

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

    Bu Parça Listesi (BOM), <dependencyManagement> bölümünde pom.xml dosyanızda 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 ürün reçetesi 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 starter, Spring Messaging Event Hubs ve Azure Event Hubs Checkpoint Store bileşenleri:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-messaging-azure-eventhubs</artifactId>
    </dependency>
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-messaging-eventhubs-checkpointstore-blob</artifactId>
    </dependency>
    

İleti göndermek ve almak için uygulamayı kodlayın

Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için aşağıdaki adımları kullanarak uygulamayı yapılandırın:

  1. Event Hubs ad alanını ve Depolama Blobunu yapılandırmak için aşağıdaki özellik ayarlarını kullanın:

    spring.cloud.azure.eventhubs.namespace=<your event-hubs-namespace>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name=<your-storage-account-name>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name=<your-storage-account-container-name>
    
  2. Aşağıdaki örnekte gösterildiği gibi yeni bir ConsumerService Java sınıfı oluşturun. Bu sınıf, bir ileti alıcısı tanımlamak için kullanılır. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

    import com.azure.spring.messaging.eventhubs.implementation.core.annotation.EventHubsListener;
    import org.springframework.stereotype.Service;
    
    @Service
    public class ConsumerService {
    
        private static final String EVENT_HUB_NAME = "<your-event-hub-name>";
        private static final String CONSUMER_GROUP = "$DEFAULT";
    
        @EventHubsListener(destination = EVENT_HUB_NAME, group = CONSUMER_GROUP)
        public void handleMessageFromEventHub(String message) {
            System.out.printf("New message received: %s%n", message);
        }
    
    }
    
  3. Aşağıdaki örnekte gösterildiği gibi Spring ile ileti göndermek ve almak için bir göndereni ve alıcıyı kablolayın. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

    import com.azure.spring.messaging.eventhubs.core.EventHubsTemplate;
    import com.azure.spring.messaging.implementation.annotation.EnableAzureMessaging;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ConfigurableApplicationContext;
    import org.springframework.messaging.support.MessageBuilder;
    
    @SpringBootApplication
    @EnableAzureMessaging
    public class EventHubMessagingApplication {
    
        private static final String EVENT_HUB_NAME = "<your-event-hub-name>";
        private static final Logger LOGGER = LoggerFactory.getLogger(EventHubMessagingApplication.class);
    
        public static void main(String[] args) {
            ConfigurableApplicationContext applicationContext = SpringApplication.run(EventHubMessagingApplication.class);
            EventHubsTemplate eventHubsTemplate = applicationContext.getBean(EventHubsTemplate.class);
            LOGGER.info("Sending a message to the Event Hubs.");
            eventHubsTemplate.sendAsync(EVENT_HUB_NAME, MessageBuilder.withPayload("Hello world").build()).subscribe();
        }
    
    }
    

    İpucu

    @EnableAzureMessaging açıklaması eklemeyi unutmayın; bu, @EventHubsListener ile açıklanan yöntemlerin keşfedilmesini sağlar ve perde arkasında mesaj dinleyici kapsayıcısını oluşturur.

  4. Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler gösterilir:

    Sending a message to the Event Hubs.
    New message received: Hello world
    

Azure Event Hubs için Spring Integration Kullanımı

Spring Integration Azure Event Hubs modülü Event Hubs ile Spring Integration çerçevesi için destek sağlar.

Spring uygulamanız Spring Integration ileti kanallarını kullanıyorsa, kanal bağdaştırıcılarını kullanarak iletileri ileti kanallarınızla Event Hubs arasında yönlendirebilirsiniz.

Gelen kanal bağdaştırıcısı, mesajları bir olay hub'ından mesaj kanalına iletir. Giden kanal bağdaştırıcısı, iletileri bir ileti kanalından olay hub'ına yayımlar.

Bu kılavuzda, Event Hubs'a ileti göndermek ve onlardan ileti almak için Spring Integration Azure Event Hubs'ın nasıl kullanılacağı gösterilmektedir.

Bağımlılık ekleme

Spring Cloud Azure Event Hubs Integration Starter 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>7.4.0</version>
           <type>pom</type>
           <scope>import</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 4.0.x kullanıyorsanız, sürümünü olarak 7.4.0ayarlayınspring-cloud-azure-dependencies.

    Spring Boot 3.5.x kullanıyorsanız, sürümünü olarak 6.5.0ayarlayınspring-cloud-azure-dependencies.

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

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

    Bu Parça Listesi (BOM), <dependencyManagement> bölümünde pom.xml dosyanızda 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 ürün reçetesi 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 Hubs Tümleştirme bileşeni:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-integration-eventhubs</artifactId>
    </dependency>
    

İleti göndermek ve almak için uygulamayı kodlayın

Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için aşağıdaki adımları kullanarak uygulamayı yapılandırın:

  1. Event Hubs ad alanını ve Depolama Blobunu yapılandırmak için aşağıdaki özellik ayarlarını kullanın:

    spring.cloud.azure.eventhubs.namespace=<your event-hubs-namespace>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name=<your-storage-account-name>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name=<your-storage-account-container-name>
    
  2. Aşağıdaki örnekte gösterildiği gibi yeni bir MessageReceiveConfiguration Java sınıfı oluşturun. Bu sınıf, bir ileti alıcısı tanımlamak için kullanılır. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

    import com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter;
    import com.azure.spring.messaging.eventhubs.core.EventHubsProcessorFactory;
    import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig;
    import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode;
    import com.azure.spring.messaging.eventhubs.core.listener.EventHubsMessageListenerContainer;
    import com.azure.spring.messaging.eventhubs.core.properties.EventHubsContainerProperties;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.integration.annotation.ServiceActivator;
    import org.springframework.integration.channel.DirectChannel;
    import org.springframework.messaging.MessageChannel;
    
    @Configuration
    public class MessageReceiveConfiguration {
    
        private static final String INPUT_CHANNEL = "input";
        private static final String EVENT_HUB_NAME = "<your-event-hub-name>";
        private static final String CONSUMER_GROUP = "$Default";
        private static final Logger LOGGER = LoggerFactory.getLogger(MessageReceiveConfiguration.class);
    
        @ServiceActivator(inputChannel = INPUT_CHANNEL)
        public void messageReceiver(byte[] payload) {
            String message = new String(payload);
            LOGGER.info("New message received: {}", message);
        }
    
        @Bean
        public EventHubsMessageListenerContainer messageListenerContainer(EventHubsProcessorFactory processorFactory) {
            EventHubsContainerProperties containerProperties = new EventHubsContainerProperties();
            containerProperties.setEventHubName(EVENT_HUB_NAME);
            containerProperties.setConsumerGroup(CONSUMER_GROUP);
            containerProperties.setCheckpointConfig(new CheckpointConfig(CheckpointMode.MANUAL));
            return new EventHubsMessageListenerContainer(processorFactory, containerProperties);
        }
    
        @Bean
        public EventHubsInboundChannelAdapter messageChannelAdapter(@Qualifier(INPUT_CHANNEL) MessageChannel inputChannel,
                                                                    EventHubsMessageListenerContainer listenerContainer) {
            EventHubsInboundChannelAdapter adapter = new EventHubsInboundChannelAdapter(listenerContainer);
            adapter.setOutputChannel(inputChannel);
            return adapter;
        }
    
        @Bean
        public MessageChannel input() {
            return new DirectChannel();
        }
    
    }
    
  3. Aşağıdaki örnekte gösterildiği gibi yeni bir MessageSendConfiguration Java sınıfı oluşturun. Bu sınıf, ileti göndereni tanımlamak için kullanılır. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

    import com.azure.spring.integration.core.handler.DefaultMessageHandler;
    import com.azure.spring.messaging.eventhubs.core.EventHubsTemplate;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.integration.annotation.MessagingGateway;
    import org.springframework.integration.annotation.ServiceActivator;
    import org.springframework.messaging.MessageHandler;
    import org.springframework.util.concurrent.ListenableFutureCallback;
    
    @Configuration
    public class MessageSendConfiguration {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(MessageSendConfiguration.class);
        private static final String OUTPUT_CHANNEL = "output";
        private static final String EVENT_HUB_NAME = "<your-event-hub-name>";
    
        @Bean
        @ServiceActivator(inputChannel = OUTPUT_CHANNEL)
        public MessageHandler messageSender(EventHubsTemplate eventHubsTemplate) {
            DefaultMessageHandler handler = new DefaultMessageHandler(EVENT_HUB_NAME, eventHubsTemplate);
            handler.setSendCallback(new ListenableFutureCallback<Void>() {
                @Override
                public void onSuccess(Void result) {
                    LOGGER.info("Message was sent successfully.");
                }
    
                @Override
                public void onFailure(Throwable ex) {
                    LOGGER.error("There was an error sending the message.", ex);
                }
            });
    
            return handler;
        }
    
        @MessagingGateway(defaultRequestChannel = OUTPUT_CHANNEL)
        public interface EventHubOutboundGateway {
            void send(String text);
        }
    
    }
    
  4. Aşağıdaki örnekte gösterildiği gibi Spring ile ileti göndermek ve almak için bir göndereni ve alıcıyı bağla:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ConfigurableApplicationContext;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.integration.config.EnableIntegration;
    
    @SpringBootApplication
    @EnableIntegration
    @Configuration(proxyBeanMethods = false)
    public class EventHubIntegrationApplication {
    
        public static void main(String[] args) {
            ConfigurableApplicationContext applicationContext = SpringApplication.run(EventHubIntegrationApplication.class, args);
            MessageSendConfiguration.EventHubOutboundGateway outboundGateway = applicationContext.getBean(MessageSendConfiguration.EventHubOutboundGateway.class);
            outboundGateway.send("Hello World");
        }
    }
    

    İpucu

    Spring Integration altyapısını @EnableIntegration etkinleştiren ek açıklamayı eklemeyi unutmayın.

  5. Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler gösterilir:

    Message was sent successfully.
    New message received: Hello World
    

Spring Cloud Azure Stream Event Hubs Bağlayıcısı'nı kullanma

Event Hubs API'sini Spring Cloud Stream uygulamasında çağırmak için Spring Cloud Azure Event Hubs Stream Binder modülünü kullanın.

Bu kılavuzda, Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için Spring Cloud Stream Event Hubs Binder'ın nasıl kullanılacağı gösterilmektedir.

Bağımlılık ekleme

Spring Cloud Azure Event Hubs Stream Binder 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>7.4.0</version>
           <type>pom</type>
           <scope>import</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 4.0.x kullanıyorsanız, sürümünü olarak 7.4.0ayarlayınspring-cloud-azure-dependencies.

    Spring Boot 3.5.x kullanıyorsanız, sürümünü olarak 6.5.0ayarlayınspring-cloud-azure-dependencies.

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

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

    Bu Parça Listesi (BOM), <dependencyManagement> bölümünde pom.xml dosyanızda 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 ürün reçetesi 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 Hubs Stream Binder bileşeni:

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

İleti göndermek ve almak için uygulamayı kodlayın

Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için aşağıdaki adımları kullanarak uygulamayı yapılandırın:

  1. Event Hubs ad alanını ve Depolama Blobunu yapılandırmak için aşağıdaki özellik ayarlarını kullanın:

    spring.cloud.azure.eventhubs.namespace=<your event-hubs-namespace>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name=<your-storage-account-name>
    spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name=<your-storage-account-container-name>
    
  2. İleti alıcısını oluşturun.

    Uygulamanızı olay havuzu olarak kullanmak için aşağıdaki görevleri tamamlayarak giriş bağlayıcısını yapılandırın:

    • Mesaj işleme mantığını tanımlayan bir Consumer bean tanımlayın. Örneğin, aşağıdaki Consumer fasulyeye şöyle bir isim verilmiştir: consume

      @Bean
      public Consumer<Message<String>> consume() {
           return message -> {
               System.out.printf("New message received: %s%n", message.getPayload());
           };
      }
      
    • Tüketim için Event Hub adını belirtmek amacıyla aşağıdaki yapılandırmayı ekleyin. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

      # name for the above `Consumer` bean
      spring.cloud.stream.function.definition=consume
      spring.cloud.stream.bindings.consume-in-0.destination=<your-event-hub-name>
      spring.cloud.stream.bindings.consume-in-0.group=$Default
      spring.cloud.stream.eventhubs.bindings.consume-in-0.consumer.checkpoint.mode=MANUAL
      
  3. İletiyi göndereni oluşturun.

    Uygulamanızı olay kaynağı olarak kullanmak için aşağıdaki görevleri tamamlayarak çıkış bağlayıcısını yapılandırın:

    • Aşağıdaki örnekte gösterildiği gibi, iletilerin uygulamanızın içinden nereden geldiğini tanımlayan bir Supplier fasulye tanımlayın:

      @Bean
      public Supplier<Message<String>> supply() {
          return () -> {
              System.out.println("Sending a message.");
              return MessageBuilder.withPayload("Hello world").build();
          };
      }
      
    • Gönderim adını belirtmek için aşağıdaki yapılandırmayı Event Hub ekleyin. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

      # "consume" is added from the above step
      spring.cloud.stream.function.definition=consume;supply
      spring.cloud.stream.bindings.supply-out-0.destination=<your-event-hub-name>
      
  4. Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler gösterilir:

    Sending a message.
    New message received: Hello world.
    

Azure Event Hubs ile Spring Kafka kullanma

Event Hubs, mevcut Kafka tabanlı uygulamalarınızın kullanabileceği bir Kafka uç noktası sağlar. Bu yaklaşım, kendi Kafka kümenizi çalıştırmaya bir alternatif sağlar. Event Hubs, mevcut Kafka uygulamalarınızın çoğuyla çalışır. Daha fazla bilgi için Apache Kafka için Event Hubs bölümüne bakın.

Bu kılavuzda Event Hubs'a ileti göndermek ve onlardan ileti almak için Azure Event Hubs ve Spring Kafka nasıl kullanılacağı gösterilmektedir.

Bağımlılık ekleme

Spring Cloud Azure starter ve Spring Kafka modüllerini 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>7.4.0</version>
           <type>pom</type>
           <scope>import</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 4.0.x kullanıyorsanız, sürümünü olarak 7.4.0ayarlayınspring-cloud-azure-dependencies.

    Spring Boot 3.5.x kullanıyorsanız, sürümünü olarak 6.5.0ayarlayınspring-cloud-azure-dependencies.

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

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

    Bu Parça Listesi (BOM), <dependencyManagement> bölümünde pom.xml dosyanızda 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 ürün reçetesi 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 starter ve Spring Kafka yapıtı:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.kafka</groupId>
      <artifactId>spring-kafka</artifactId>
    </dependency>
    

İleti göndermek ve almak için uygulamayı kodlayın

Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için aşağıdaki adımları kullanarak uygulamayı yapılandırın:

  1. Event Hubs ad alanını yapılandırmak için aşağıdaki özellik ayarını kullanın:

    spring.kafka.bootstrap-servers=<your event-hubs-namespace>.servicebus.windows.net:9093
    
  2. Göndermek için KafkaTemplate ve almak için @KafkaListener kullanın, aşağıdaki örnekte gösterildiği gibi. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.kafka.annotation.KafkaListener;
    import org.springframework.kafka.core.KafkaTemplate;
    
    @SpringBootApplication
    public class EventHubKafkaApplication implements CommandLineRunner {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(EventHubKafkaApplication.class);
        private static final String EVENT_HUB_NAME = "<your-event-hub-name>";
        private static final String CONSUMER_GROUP = "$Default";
        private final KafkaTemplate<String, String> kafkaTemplate;
    
        public EventHubKafkaApplication(KafkaTemplate<String, String> kafkaTemplate) {
            this.kafkaTemplate = kafkaTemplate;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(EventHubKafkaApplication.class, args);
        }
    
        @Override
        public void run(String... args) {
            kafkaTemplate.send(EVENT_HUB_NAME, "Hello World");
            LOGGER.info("Message was sent successfully.");
        }
    
        @KafkaListener(topics = EVENT_HUB_NAME, groupId = CONSUMER_GROUP)
        public void receive(String message) {
            LOGGER.info("New message received: {}", message);
        }
    
    }
    
  3. Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler gösterilir:

    Message was sent successfully.
    New message received: Hello world
    

Spring Cloud Stream Kafka Binder'i Azure Event Hubs ile kullanma

Spring Cloud Stream, uygulama geliştiricilerinin ileti temelli mikro hizmetler yazmasına olanak tanıyan bir çerçevedir. Mesajlaşma sistemi ile Spring Cloud Stream arasındaki köprü bağlayıcı soyutlaması üzerinden yapılır. Bağlayıcılar çeşitli mesajlaşma sistemleri için mevcuttur, ancak en yaygın kullanılan bağlayıcılardan biri Apache Kafka'dır.

Bu kılavuzda, Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için Azure Event Hubs ve Spring Cloud Stream Kafka Binder nasıl kullanılacağı gösterilmektedir.

Bağımlılık ekleme

Spring Cloud Azure starter ve Spring Cloud Stream bağlayıcısı Kafka modüllerini 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>7.4.0</version>
           <type>pom</type>
           <scope>import</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
    

    Not

    Spring Boot 4.0.x kullanıyorsanız, sürümünü olarak 7.4.0ayarlayınspring-cloud-azure-dependencies.

    Spring Boot 3.5.x kullanıyorsanız, sürümünü olarak 6.5.0ayarlayınspring-cloud-azure-dependencies.

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

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

    Bu Parça Listesi (BOM), <dependencyManagement> bölümünde pom.xml dosyanızda 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 ürün reçetesi 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 başlangıç bileşeni:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-stream-binder-kafka</artifactId>
    </dependency>
    

İleti göndermek ve almak için uygulamayı kodlayın

Event Hubs'a ileti göndermek ve olay hub'larından ileti almak için aşağıdaki adımları kullanarak uygulamayı yapılandırın:

  1. Kafka aracısını yapılandırmak için aşağıdaki özellik ayarını kullanın:

    spring.cloud.stream.kafka.binder.brokers=<your event-hubs-namespace>.servicebus.windows.net:9093
    
  2. İleti alıcısını oluşturun.

    Uygulamanızı olay havuzu olarak kullanmak için aşağıdaki görevleri tamamlayarak giriş bağlayıcısını yapılandırın:

    • Mesaj işleme mantığını tanımlayan bir Consumer bean tanımlayın. Örneğin, aşağıdaki Consumer fasulyeye şöyle bir isim verilmiştir: consume

      @Bean
      public Consumer<Message<String>> consume() {
          return message -> {
              System.out.printf("New message received: %s%n", message.getPayload());
          };
      }
      
    • Tüketim için Event Hub adını belirtmek amacıyla aşağıdaki yapılandırmayı ekleyin. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

      # name for the above `Consumer` bean
      spring.cloud.stream.function.definition=consume
      spring.cloud.stream.bindings.consume-in-0.destination=<your-event-hub-name>
      spring.cloud.stream.bindings.consume-in-0.group=$Default
      
  3. İletiyi göndereni oluşturun.

    Uygulamanızı olay kaynağı olarak kullanmak için aşağıdaki görevleri tamamlayarak çıkış bağlayıcısını yapılandırın:

    • Aşağıdaki örnekte gösterildiği gibi, iletilerin uygulamanızın içinden nereden geldiğini tanımlayan bir Supplier fasulye tanımlayın:

      @Bean
      public Supplier<Message<String>> supply() {
          return () -> {
              System.out.println("Sending a message.");
              return MessageBuilder.withPayload("Hello world").build();
          };
      }
      
    • Gönderim adını belirtmek için aşağıdaki yapılandırmayı Event Hub ekleyin. Yer tutucuyu <your-event-hub-name> gerçek değerinizle değiştirmeyi unutmayın.

      # "consume" is added from the above step
      spring.cloud.stream.function.definition=consume;supply
      spring.cloud.stream.bindings.supply-out-0.destination=<your-event-hub-name>
      
  4. Uygulamayı başlatın. Aşağıdaki örneğe benzer günlükler gösterilir:

    Sending a message.
    New message received: Hello world.
    

Azure Spring Apps'e dağıtım yapma

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 Spring Boot uygulamalarını kod değişikliği olmadan Azure 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 dağıtmak için bkz. İlk uygulamanızı Azure Spring Apps'a dağıtma.

Sonraki adımlar

Spring geliştiricileri için AzureSpring Cloud Azure Event Hubs Örnekleri

Ayrıca bkz.

Microsoft Azure kullanılabilen diğer Spring Boot Başlatıcıları hakkında daha fazla bilgi için bkz. Spring Cloud Azure nedir?