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 ileti göndermek ve almak için Kafka için Azure Event Hubs'ı kullanmak üzere Java tabanlı Spring Cloud Stream Binder'ın nasıl yapılandırılabileceği 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 kimlik doğrulaması ve Paylaşılan Erişim İmzaları (SAS) kimlik doğrulaması. Parolasız sekmesi Microsoft Entra kimlik doğrulamasını, Bağlantı dizesi sekmesi ise SAS kimlik doğrulamasını gösterir.
Microsoft Entra kimlik doğrulaması, Microsoft Entra Id'de tanımlanan kimlikleri kullanarak Kafka için Azure Event Hubs'a bağlanmaya yönelik bir mekanizmadır. Microsoft Entra kimlik doğrulaması ile veritabanı kullanıcı kimliklerini ve diğer Microsoft hizmetleri merkezi bir konumda yönetebilir ve bu da izin yönetimini basitleştirir.
Azure Event Hubs ad alanınızın bağlantı dizesi, Kafka için Event Hubs'a delege edilmiş erişim sağlamak amacıyla SAS kimlik doğrulaması tarafından kullanılır. Paylaşılan Erişim İmzalarını kimlik bilgileri olarak kullanmayı seçerseniz, bağlantı dizesi kendiniz yönetmeniz gerekir.
Önkoşullar
Azure aboneliği - ücretsiz bir abonelik oluşturun.
Java Development Kit (JDK) sürüm 8 veya üzeri.
Apache Maven, sürüm 3.2 veya üzeri.
cURL veya işlevselliği test etmek için benzer bir HTTP yardımcı programı.
Azure Cloud Shell veya Azure CLI 2.37.0 veya üzeri.
Azure Olay Hubu Eğer yoksa, Azure portalını kullanarak bir etkinlik merkezi oluşturun.
Spring Boot uygulaması. Yoksa Spring Initializr ile bir Maven projesi oluşturun. Maven Projesi'ni seçtiğinizden emin olun ve Bağımlılıklar'ın altında Spring Web, Apache Kafka için Spring ve Cloud Stream bağımlılıklarını ekleyip 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
Önemli
Spring Cloud Azure 6.0.0 veya üzeri sürümlerde bağlantı dizesi kimlik doğrulaması artık desteklenmiyor. Bunun yerine parolasız bağlantılar kullanın.
Azure Event Hubs, Event Hubs kaynaklarına yönelik istekleri yetkilendirmek için Microsoft Entra Id kullanılmasını destekler. Microsoft Entra Id ile Azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak bir kullanıcı veya uygulama hizmet sorumlusu olabilecek bir güvenlik sorumlusuna izin vekleyebilirsiniz.
Bu örneği Microsoft Entra kimlik doğrulamasıyla yerel olarak çalıştırmak istiyorsanız, kullanıcı hesabınızın Kimliğinin IntelliJ için Azure Toolkit, Visual Studio Code Azure Hesabı eklentisi veya Azure CLI aracılığıyla doğrulanmış olduğundan 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, şu anda kullanmakta olduğunuz Microsoft Entra hesabınıza Azure Event Hubs Data Receiver ve Azure Event Hubs Data Sender rollerini atayın. Erişim rolleri verme hakkında daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama ve Microsoft Entra Id kullanarak Event Hubs kaynaklarına erişim 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>6.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Uyarı
Spring Boot 3.0.x-3.4.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü5.23.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 Ü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 BOM için kullanılan sürüm hakkında daha fazla bilgi için bkz. Spring Cloud Azure'ın Hangi Sürümünü Kullanmalıyım.
Spring Cloud Azure Starter bileşeni:
<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.
Önemli
Spring Cloud Azure 6.0.0 veya üzeri sürümlerde bağlantı dizesi kimlik doğrulaması artık desteklenmiyor. Bunun yerine parolasız bağlantılar 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'tan bir Tüketici Grubu belirtir; bu grubun, Azure Event Hubs örneğinizi oluşturduğunuzda oluşturulan temel tüketici grubunu kullanmak üzere $Defaultolarak ayarlanabileceği anlamına gelir.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ığı öğesini kullanır
DefaultAzureCredential.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 , 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.