Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, Azure Event Hubs ile mesaj göndermek ve almak amacıyla Java tabanlı Spring Cloud Stream bağlayıcısını Kafka için Azure Event Hubs kullanacak şekilde yapılandırma işlemi gösterilmektedir. Daha fazla bilgi için bkz. Apache Kafka uygulamalarından Azure Event Hubs kullanma
Bu öğreticide iki kimlik doğrulama yöntemi ekleyeceğiz: Microsoft Entra authentication ve Shared Access Signatures (SAS) authentication. Passwordless sekmesi Microsoft Entra kimlik doğrulamasını gösterir ve Connection dizesi sekmesi SAS kimlik doğrulamasını gösterir.
Microsoft Entra kimlik doğrulaması, Microsoft Entra ID tanımlanan kimlikleri kullanarak Kafka için Azure Event Hubs bağlanma mekanizmasıdır. Microsoft Entra kimlik doğrulamasıyla, veritabanı kullanıcı kimliklerini ve diğer Microsoft hizmetleri merkezi bir konumda yönetebilirsiniz ve bu da izin yönetimini basitleştirir.
SAS kimlik doğrulaması, Kafka için Event Hubs'a temsilci erişimi için Azure Event Hubs ad alanı bağlantı dizgesini kullanır. Paylaşılan Erişim İmzalarını kimlik bilgileri olarak kullanmayı seçerseniz, bağlantı dizgesini kendiniz yönetmeniz gerekir.
Önkoşullar
Azure aboneliği - ücretsiz bir abonelik .
Java Geliştirme Seti (JDK) sürüm 8 veya üzeri.
Apache Maven, sürüm 3.2 veya üzeri.
cURL veya benzer bir HTTP yardımcı programını işlevselliği test etmek için kullanın.
Azure Cloud Shell veya Azure CLI 2.37.0 veya üzeri.
Bir Azure Olay Merkezi. Eğer henüz birine sahip değilseniz, Azure portal kullanarak bir Event Hub oluşturun.
Spring Boot uygulaması. Eğer bir tane yoksa, Spring Initializr ile bir Maven projesi oluşturun. Maven Project ve Dependencies altında Spring Web, Spring for Apache Kafka ve Cloud Stream bağımlılıklarını ekleyin ve ardından Java sürüm 8 veya üzerini seçin.
Önemli
Bu öğreticideki adımları tamamlamak için Spring Boot sürüm 2.5 veya üzeri gereklidir.
Kimlik bilgilerini hazırlama
Azure Event Hubs, Event Hubs kaynaklarına yönelik istekleri yetkilendirmek için Microsoft Entra ID kullanmayı destekler. Microsoft Entra ID ile Azure rol tabanlı erişim denetimi (Azure RBAC) kullanarak kullanıcı veya uygulama hizmet ilkesi olabilecek bir güvenlik ilkesine izin verebilirsiniz.
Bu örneği Microsoft Entra kimlik doğrulamasıyla yerel olarak çalıştırmak istiyorsanız, kullanıcı hesabınızın Azure Toolkit for IntelliJ, Visual Studio Code Azure Account eklentisi veya Azure CLI aracılığıyla kimlik doğrulamasından geçirdiğinizden emin olun. Ayrıca, hesaba yeterli izinlerin verildiğinden emin olun.
Uyarı
Parolasız bağlantılar kullanırken hesabınıza kaynaklara erişim vermeniz gerekir. 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. 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.
Azure Event Hubs'dan ileti gönderme ve alma
Azure Olay hub'ı ile Spring Cloud Azure kullanarak ileti gönderip alabilirsiniz.
Spring Cloud Azure 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.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Uyarı
Spring Boot 4.0.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü7.2.0olarak ayarladığınızdan emin olun.Spring Boot 3.5.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü6.2.0olarak ayarladığınızdan emin olun.Spring Boot 3.1.x-3.5.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü5.25.0olarak ayarladığınızdan emin olun.Eğer Spring Boot 2.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü4.20.0olarak 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 artefaktı:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>
Uygulamayı kodlama
Uygulamanızı Azure Event Hubs kullanarak ileti üretecek ve kullanacak şekilde yapılandırmak için aşağıdaki adımları kullanın.
Application.properties dosyanıza aşağıdaki özellikleri ekleyerek Olay hub'ı kimlik bilgilerini yapılandırın.
spring.cloud.stream.kafka.binder.brokers=${AZ_EVENTHUBS_NAMESPACE_NAME}.servicebus.windows.net:9093 spring.cloud.function.definition=consume;supply spring.cloud.stream.bindings.consume-in-0.destination=${AZ_EVENTHUB_NAME} spring.cloud.stream.bindings.consume-in-0.group=$Default spring.cloud.stream.bindings.supply-out-0.destination=${AZ_EVENTHUB_NAME}Tavsiye
Eğer
spring-cloud-azure-dependencies:4.3.0sürümünü kullanıyorsanız,spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sourcesdeğerine sahip özelliğicom.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfigurationeklemeniz gerekir.olduğundan
4.4.0, bu özellik otomatik olarak eklenir, bu nedenle el ile eklemeniz gerekmez.Aşağıdaki tabloda yapılandırmadaki alanlar açıklanmaktadır:
Alan Açıklama spring.cloud.stream.kafka.binder.brokersAzure Event Hubs uç noktasını belirtir. spring.cloud.stream.bindings.consume-in-0.destinationGirdi hedefi olan etkinlik merkezini belirler, bu eğitici için daha önce oluşturduğunuz merkezdir. spring.cloud.stream.bindings.consume-in-0.groupAzure Event Hubs örneğinizi oluştururken oluşturulan temel tüketici grubunu kullanmak için Azure Event Hubs'den $Defaultolarak ayarlayabileceğiniz bir Tüketici Grubu belirtir.spring.cloud.stream.bindings.supply-out-0.destinationBu öğretici için giriş hedefiyle aynı olan çıkış hedefi olay hub'ını tanımlar. Uyarı
Otomatik konu oluşturmayı etkinleştirirseniz, değeri en az
spring.cloud.stream.kafka.binder.replicationFactorolarak ayarlanmış1yapılandırma öğesini eklediğinizden emin olun. Daha fazla bilgi için bkz . Spring Cloud Stream Kafka Binder Başvuru Kılavuzu.Aşağıdaki içeriği göstermek için başlangıç sınıfı dosyasını düzenleyin.
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.context.annotation.Bean; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import java.util.function.Consumer; import java.util.function.Supplier; @SpringBootApplication public class EventHubKafkaBinderApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventHubKafkaBinderApplication.class); private static final Sinks.Many<Message<String>> many = Sinks.many().unicast().onBackpressureBuffer(); public static void main(String[] args) { SpringApplication.run(EventHubKafkaBinderApplication.class, args); } @Bean public Supplier<Flux<Message<String>>> supply() { return ()->many.asFlux() .doOnNext(m->LOGGER.info("Manually sending message {}", m)) .doOnError(t->LOGGER.error("Error encountered", t)); } @Bean public Consumer<Message<String>> consume() { return message->LOGGER.info("New message received: '{}'", message.getPayload()); } @Override public void run(String... args) { many.emitNext(new GenericMessage<>("Hello World"), Sinks.EmitFailureHandler.FAIL_FAST); } }Tavsiye
Bu öğreticide yapılandırmalarda veya kodda kimlik doğrulama işlemi yoktur. Ancak, Azure hizmetlerine bağlanmak için kimlik doğrulaması gerekir. Kimlik doğrulamasını tamamlamak için Azure Identity 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ığı
DefaultAzureCredentialkullanır.DefaultAzureCredentialbirden ç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 ve üretim ortamları gibi) farklı kimlik doğrulama yöntemleri kullanmasını sağlar. Daha fazla bilgi için bkz. DefaultAzureCredential.Yerel geliştirme ortamlarında kimlik doğrulamasını tamamlamak için Azure CLI, Visual Studio Code, PowerShell veya diğer yöntemleri kullanabilirsiniz. Daha fazla bilgi 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 kullanıcı tarafından atanan yönetilen kimliği kullanmanızı öneririz. Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nelerdir?
Uygulamayı başlatın. Aşağıdaki örnek gibi iletiler uygulama günlüğünüze gönderilecektir:
Kafka version: 3.0.1 Kafka commitId: 62abe01bee039651 Kafka startTimeMs: 1622616433956 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 Stream Binder Event Hubs Kafka Örnekleri