Eventi
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subitoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Questa esercitazione illustra come inviare e ricevere messaggi usando Hub eventi di Azure e Spring Cloud Stream Binder Eventhubs in un'applicazione Spring Boot.
Una sottoscrizione di Azure: creare un account gratuitamente.
Java Development Kit (JDK) versione 8 o successiva.
Apache Maven versione 3.2 o successiva.
cURL o un'utilità HTTP simile per testare la funzionalità.
Un hub eventi di Azure. Se non è disponibile, creare un hub eventi usando portale di Azure.
Un account Archiviazione di Azure per i checkpoint dell'hub eventi. Se non è disponibile, creare un account di archiviazione.
Applicazione Spring Boot. Se non è disponibile, creare un progetto Maven con Spring Initializr. Assicurarsi di selezionare Progetto Maven e, in Dipendenze, aggiungere le dipendenze Spring Web e Supporto di Azure e quindi selezionare Java versione 8 o successiva.
Nota
Per concedere all'account l'accesso alle risorse, in Hub eventi di Azure assegnare il Azure Event Hubs Data Receiver
ruolo e Azure Event Hubs Data Sender
all'account Microsoft Entra attualmente in uso. Quindi, nell'account Archiviazione di Azure assegnare il Storage Blob Data Contributor
ruolo all'account Microsoft Entra attualmente in uso. Per altre informazioni sulla concessione dei ruoli di accesso, vedere Assegnare i ruoli di Azure usando il portale di Azure e Autorizzare l'accesso alle risorse di Hub eventi usando Microsoft Entra ID.
Importante
Spring Boot versione 2.5 o successiva è necessario per completare i passaggi di questa esercitazione.
Con un account Archiviazione di Azure e un hub eventi di Azure, è possibile inviare e ricevere messaggi usando Spring Cloud Azure Stream Binder Event Hubs.
Per installare il modulo Spring Cloud Stream Binder Event Hubs, aggiungere le dipendenze seguenti al file pom.xml :
Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Nota
Se si usa Spring Boot 2.x, assicurarsi di impostare la spring-cloud-azure-dependencies
versione su 4.19.0
.
Questa distinta base deve essere configurata nella <dependencyManagement>
sezione del file di pom.xml . In questo modo tutte le dipendenze di Spring Cloud Azure usano la stessa versione.
Per altre informazioni sulla versione usata per questa distinta base, vedere La versione di Spring Cloud azure da usare.
Artefatto di Hub eventi di Spring Cloud Stream Binder:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-stream-binder-eventhubs</artifactId>
</dependency>
Usare la procedura seguente per configurare l'applicazione per produrre e utilizzare messaggi usando Hub eventi di Azure.
Configurare le credenziali dell'hub eventi aggiungendo le proprietà seguenti al file application.properties .
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=1000
La tabella seguente descrive i campi nella configurazione:
Campo | Descrizione |
---|---|
spring.cloud.azure.eventhubs.namespace |
Specificare lo spazio dei nomi ottenuto nell'hub eventi dal portale di Azure. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Specificare l'account di archiviazione creato in questa esercitazione. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Specificare il contenitore dell'account di archiviazione. |
spring.cloud.stream.bindings.consume-in-0.destination |
Specificare l'hub eventi usato in questa esercitazione. |
spring.cloud.stream.bindings.consume-in-0.group |
Specificare i gruppi di consumer nell'istanza di Hub eventi. |
spring.cloud.stream.bindings.supply-out-0.destination |
Specificare lo stesso hub eventi usato in questa esercitazione. |
spring.cloud.stream.eventhubs.bindings.consume-in-0.consumer.checkpoint.mode |
Specificare MANUAL . |
spring.cloud.function.definition |
Specificare il bean funzionale da associare alle destinazioni esterne esposte dalle associazioni. |
spring.cloud.stream.poller.initial-delay |
Specificare il ritardo iniziale per i trigger periodici. Il valore predefinito è 0 . |
spring.cloud.stream.poller.fixed-delay |
Specificare il ritardo fisso per il poller predefinito in millisecondi. Il valore predefinito è 1000 L . |
Modificare il file della classe di avvio per visualizzare il contenuto seguente.
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);
}
}
Suggerimento
In questa esercitazione non sono presenti operazioni di autenticazione nelle configurazioni o nel codice. Tuttavia, la connessione ai servizi di Azure richiede l'autenticazione. Per completare l'autenticazione, è necessario usare Identità di Azure. Spring Cloud Azure usa DefaultAzureCredential
, che la libreria di identità di Azure fornisce per ottenere le credenziali senza modifiche al codice.
DefaultAzureCredential
supporta più metodi di autenticazione e determina il metodo da usare in fase di esecuzione. Questo approccio consente all'app di usare metodi di autenticazione diversi in ambienti diversi (ad esempio ambienti locali e di produzione) senza implementare codice specifico dell'ambiente. Per altre informazioni, vedere DefaultAzureCredential.
Per completare l'autenticazione negli ambienti di sviluppo locali, è possibile usare l'interfaccia della riga di comando di Azure, Visual Studio Code, PowerShell o altri metodi. Per altre informazioni, vedere Autenticazione di Azure in ambienti di sviluppo Java. Per completare l'autenticazione negli ambienti di hosting di Azure, è consigliabile usare l'identità gestita assegnata dall'utente. Per altre informazioni, vedere Informazioni sulle identità gestite per le risorse di Azure
Avviare l’applicazione. I messaggi simili verranno inseriti nel log applicazioni, come illustrato nell'output di esempio seguente:
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
Ora che l'applicazione Spring Boot è in esecuzione in locale, è possibile spostarla nell'ambiente di produzione. Azure Spring Apps semplifica la distribuzione di applicazioni Spring Boot in Azure senza modifiche al codice. Il servizio gestisce l'infrastruttura delle applicazioni Spring per consentire agli sviluppatori di concentrarsi sul codice. Azure Spring Apps fornisce la gestione del ciclo di vita tramite funzionalità complete di monitoraggio e diagnostica, gestione della configurazione, individuazione dei servizi, integrazione di CI/CD, distribuzioni blu/verde e altro ancora. Per distribuire l'applicazione in Azure Spring Apps, vedere Distribuire la prima applicazione in Azure Spring Apps.
Eventi
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subitoFormazione
Modulo
Deploy a Spring Boot app to Azure Container Apps - Training
In this module, you learn how to deploy a Spring Boot app to Azure Container Apps. You deploy a Spring Boot application to Azure Container Apps and maintain it using the built-in Java stack.
Certificazione
Microsoft Certified: Azure Developer Associate - Certifications
Progettare soluzioni end-to-end in Microsoft Azure per creare Funzioni di Azure, implementare e gestire app Web, sviluppare soluzioni che usano Archiviazione di Azure e altro ancora.
Documentazione
Uso di Hub eventi nelle applicazioni Spring - Java on Azure
Questo articolo illustra come usare Hub eventi di Azure nelle applicazioni Java compilate con Spring Framework.
Usare Spring Kafka con Hub eventi di Azure per l'API Kafka - Java on Azure
Illustra come configurare uno strumento spring cloud Stream Binder basato su Java per l'uso di Apache Kafka con Hub eventi di Azure.
Proprietà di configurazione di Hub eventi di Azure - Java on Azure
Questo documento di riferimento contiene tutte le proprietà di configurazione di Hub eventi di Azure.
Inviare o ricevere eventi da Hub eventi di Azure tramite Java (ultima versione) - Azure Event Hubs
Questo articolo fornisce una procedura dettagliata per la creazione di un'applicazione Java che invia/riceve eventi da e verso Hub eventi di Azure.