Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az oktatóanyag bemutatja, hogyan küldhet és fogadhat üzeneteket az Azure Event Hubs és a Spring Cloud Stream Binder EventHubs használatával spring boot-alkalmazásokban.
Előfeltételek
Azure-előfizetés – hozzon létre egyet ingyenesen.
A Java Development Kit (JDK) 8- vagy újabb verziója.
Apache Maven, 3.2-es vagy újabb verzió.
cURL vagy hasonló HTTP-segédprogram a funkciók teszteléséhez.
Egy Azure Event Hub. Ha nincs ilyenje, hozzon létre egy eseményközpontot az Azure Portal használatával.
Egy Azure Storage-fiók az Event Hub ellenőrzőpontjaihoz. Ha nem rendelkezik ilyen fiókkal, hozzon létre egy tárfiókot.
Egy Spring Boot-alkalmazás. Ha nem rendelkezik ilyennel, hozzon létre egy Maven-projektet a Spring Initializrrel. Mindenképpen válassza a Maven Projectet, és a Függőségek területen adja hozzá a Spring Web és az Azure támogatási függőségeit, majd válassza a Java 8-es vagy újabb verzióját.
Feljegyzés
Ahhoz, hogy a fiókja hozzáférhessen az erőforrásokhoz, az Azure Event Hubsban rendelje hozzá a Azure Event Hubs Data Receiver és Azure Event Hubs Data Sender szerepkört ahhoz a Microsoft Entra-fiókhoz, amelyet jelenleg használ. Ezután az Azure Storage-fiókban rendelje hozzá a Storage Blob Data Contributor szerepkört a jelenleg használt Microsoft Entra-fiókhoz. További információ a hozzáférési szerepkörök megadásáról: Azure-szerepkörök hozzárendelése az Azure Portal használatával és Az Event Hubs-erőforrásokhoz való hozzáférés engedélyezése a Microsoft Entra ID használatával.
Fontos
Az oktatóanyag lépéseinek elvégzéséhez a Spring Boot 2.5-ös vagy újabb verziójára van szükség.
Üzenetek küldése és fogadása az Azure Event Hubsból
Egy Azure Storage-fiókkal és egy Azure Event Hubbal üzeneteket küldhet és fogadhat a Spring Cloud Azure Stream Binder Event Hubs használatával.
A Spring Cloud Azure Stream Binder Event Hubs modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzéke (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>Feljegyzés
Ha Spring Boot 3.0.x-3.4.x verziót használ, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót5.23.0.Ha a Spring Boot 2.x-et használja, feltétlenül állítsa be a
spring-cloud-azure-dependenciesverziót4.20.0értékre.Ezt az anyagjegyzéket (BOM) a
<dependencyManagement>pom.xml fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud Azure-függőség ugyanazt a verziót használja.A BOM-hez használt verzióról további információt a Spring Cloud Azure melyik verzióját érdemes használni.
A Spring Cloud Azure Stream Binder Event Hubs-összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-eventhubs</artifactId> </dependency>
Az alkalmazás kódolása
Az alábbi lépésekkel konfigurálhatja az alkalmazást üzenetek előállítására és felhasználására az Azure Event Hubs használatával.
Az Event Hub hitelesítő adatainak konfigurálásához adja hozzá az alábbi tulajdonságokat az application.properties fájlhoz .
spring.cloud.azure.eventhubs.namespace=${AZURE_EVENTHUBS_NAMESPACE} spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name=${AZURE_STORAGE_ACCOUNT_NAME} spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name=${AZURE_STORAGE_CONTAINER_NAME} spring.cloud.stream.bindings.consume-in-0.destination=${AZURE_EVENTHUB_NAME} spring.cloud.stream.bindings.consume-in-0.group=${AZURE_EVENTHUB_CONSUMER_GROUP} spring.cloud.stream.bindings.supply-out-0.destination=${AZURE_EVENTHUB_NAME} spring.cloud.stream.eventhubs.bindings.consume-in-0.consumer.checkpoint.mode=MANUAL spring.cloud.function.definition=consume;supply; spring.cloud.stream.poller.initial-delay=0 spring.cloud.stream.poller.fixed-delay=1000Az alábbi táblázat a konfiguráció mezőit ismerteti:
Mező Leírás spring.cloud.azure.eventhubs.namespaceAdja meg az eseményközpontban az Azure Portalról beszerzett névteret. spring.cloud.azure.eventhubs.processor.checkpoint-store.account-nameAdja meg a tárfiókot, amelyet ebben az oktatóanyagban létrehozott. spring.cloud.azure.eventhubs.processor.checkpoint-store.container-nameAdja meg a tárfiók tárolóját. spring.cloud.stream.bindings.consume-in-0.destinationAdja meg az oktatóanyagban használt eseményközpontot. spring.cloud.stream.bindings.consume-in-0.groupAdja meg a fogyasztói csoportokat az Event Hubs-példányban. spring.cloud.stream.bindings.supply-out-0.destinationAdja meg ugyanazt az eseményközpontot, amelyet ebben az oktatóanyagban használt. spring.cloud.stream.eventhubs.bindings.consume-in-0.consumer.checkpoint.modeAdja meg a következőt: MANUAL.spring.cloud.function.definitionAdja meg, hogy melyik funkcionális komponenst kell a kötések által kiállított külső célhelyhez rendelni. spring.cloud.stream.poller.initial-delayAdja meg a rendszeres eseményindítók kezdeti késleltetését. Az alapértelmezett érték a 0.spring.cloud.stream.poller.fixed-delayAdja meg az alapértelmezett poller rögzített késleltetését ezredmásodpercben. Az alapértelmezett érték a 1000 L.Szerkessze az indítási osztályfájlt a következő tartalom megjelenítéséhez.
import com.azure.spring.messaging.checkpoint.Checkpointer; import com.azure.spring.messaging.eventhubs.support.EventHubsHeaders; 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.MessageBuilder; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import java.util.function.Consumer; import java.util.function.Supplier; import static com.azure.spring.messaging.AzureHeaders.CHECKPOINTER; @SpringBootApplication public class EventHubBinderApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventHubBinderApplication.class); private static final Sinks.Many<Message<String>> many = Sinks.many().unicast().onBackpressureBuffer(); public static void main(String[] args) { SpringApplication.run(EventHubBinderApplication.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->{ Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER); LOGGER.info("New message received: '{}', partition key: {}, sequence number: {}, offset: {}, enqueued " +"time: {}", message.getPayload(), message.getHeaders().get(EventHubsHeaders.PARTITION_KEY), message.getHeaders().get(EventHubsHeaders.SEQUENCE_NUMBER), message.getHeaders().get(EventHubsHeaders.OFFSET), message.getHeaders().get(EventHubsHeaders.ENQUEUED_TIME) ); checkpointer.success() .doOnSuccess(success->LOGGER.info("Message '{}' successfully checkpointed", message.getPayload())) .doOnError(error->LOGGER.error("Exception found", error)) .block(); }; } @Override public void run(String... args) { LOGGER.info("Going to add message {} to sendMessage.", "Hello World"); many.emitNext(MessageBuilder.withPayload("Hello World").build(), Sinks.EmitFailureHandler.FAIL_FAST); } }Tipp.
Ebben az oktatóanyagban nincsenek hitelesítési műveletek a konfigurációkban vagy a kódban. Az Azure-szolgáltatásokhoz való csatlakozáshoz azonban hitelesítés szükséges. A hitelesítés befejezéséhez az Azure Identity-et kell használnia. A Spring Cloud Azure
DefaultAzureCredentialaz Azure Identity-kódtár használatával segít a hitelesítő adatok kódmódosítások nélküli beszerzésében.DefaultAzureCredentialtöbb hitelesítési módszert támogat, és meghatározza, hogy melyik metódust használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (például helyi és éles környezetekben) környezetspecifikus kód implementálása nélkül. További információ: DefaultAzureCredential.A helyi fejlesztési környezetekben a hitelesítés befejezéséhez használhatja az Azure CLI-t, a Visual Studio Code-ot, a PowerShellt vagy más módszereket. További információ: Azure-hitelesítés Java-fejlesztési környezetekben. A hitelesítés azure-beli üzemeltetési környezetekben való elvégzéséhez javasoljuk a felhasználó által hozzárendelt felügyelt identitás használatát. További információ: Mik az Azure-erőforrások felügyelt identitásai?
Indítsa el az alkalmazást. Az ilyen üzenetek megjelennek az alkalmazásnaplóban, ahogy az alábbi példakimenetben is látható:
New message received: 'Hello World', partition key: 107207233, sequence number: 458, offset: 94256, enqueued time: 2023-02-17T08:27:59.641Z Message 'Hello World!' successfully checkpointed
Üzembe helyezés az Azure Spring Appsben
Most, hogy a Spring Boot alkalmazás helyileg fut, itt az ideje éles környezetbe helyezni. Az Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások üzembe helyezését az Azure-ban kódmódosítások nélkül. A szolgáltatás kezeli a Spring-alkalmazások infrastruktúráját, hogy a fejlesztők a kódjukra összpontosíthassanak. Az Azure Spring Apps átfogó monitorozási és diagnosztikai, konfigurációkezelési, szolgáltatásfelderítési, CI/CD-integrációs, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. Az alkalmazás Azure Spring Appsben való üzembe helyezéséről az első alkalmazás üzembe helyezése az Azure Spring Appsben című témakörben olvashat.