Usare Griglia di eventi di Azure in Spring
Questo articolo illustra come usare Griglia di eventi di Azure per inviare un evento a un argomento e usare bus di servizio Queue come gestore eventi per ricevere in un'applicazione Spring Boot.
Il servizio Griglia di eventi di Azure è un servizio di distribuzione dei messaggi pub sub altamente scalabile e completamente gestito che offre modelli di consumo di messaggi flessibili usando i protocolli MQTT e HTTP.
Prerequisiti
Una sottoscrizione di Azure: creare un account gratuitamente.
Java Development Kit (JDK) versione 8 o successiva.
Apache Maven, versione 3.0 o successiva.
Istanza dell'argomento di Griglia di eventi. Se non è disponibile, vedere Creare un argomento personalizzato o un dominio in Griglia di eventi di Azure.
Istanza della coda di bus di servizio. Se non è disponibile, vedere Creare una coda nel portale di Azure.
Applicazione Spring Boot. Se non è disponibile, creare un progetto Maven con Spring Initializr. Assicurarsi di selezionare Progetto Maven e selezionare Java versione 8 o successiva.
Sottoscrivere eventi per un argomento personalizzato
Usare la procedura seguente per creare una sottoscrizione di eventi per indicare a Griglia di eventi di inviare eventi alla coda bus di servizio:
- Nella portale di Azure passare all'istanza dell'argomento di Griglia di eventi.
- Selezionare Sottoscrizioni eventi sulla barra degli strumenti.
- Nella pagina Crea sottoscrizione di eventi immettere un valore di nome per la sottoscrizione di eventi.
- In Tipo di endpoint selezionare bus di servizio Coda.
- Scegliere Seleziona un endpoint e quindi selezionare l'istanza della coda bus di servizio creata in precedenza.
Inviare un evento Griglia di eventi di Azure e ricevere da bus di servizio di Azure Queue
Con una risorsa Griglia di eventi di Azure, è possibile inviare un evento usando Spring Cloud Griglia di eventi di Azure. Con una risorsa queue bus di servizio di Azure come gestore eventi, è possibile ricevere l'evento usando Spring Cloud Azure Stream Binder per bus di servizio.
Per installare il modulo Spring Cloud Griglia di eventi di Azure Starter e spring cloud Azure Stream Binder bus di servizio modulo, 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.19.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 su4.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.L'artefatto Spring Cloud Griglia di eventi di Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>
Spring Cloud Azure Stream Binder bus di servizio artefatto:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Codice dell'applicazione
Usare la procedura seguente per configurare l'applicazione per inviare un evento usando Griglia di eventi e ricevere tramite bus di servizio Queue.
Configurare Griglia di eventi di Azure e bus di servizio credenziali nel file di configurazione application.yaml, come illustrato nell'esempio seguente:
spring: cloud: azure: eventgrid: endpoint: ${AZURE_EVENTGRID_ENDPOINT} key: ${AZURE_EVENTGRID_KEY} servicebus: connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING} function: definition: consume stream: bindings: consume-in-0: destination: ${AZURE_SERVICEBUS_QUEUE_NAME} servicebus: bindings: consume-in-0: consumer: auto-complete: false
Modificare il file della classe di avvio per visualizzare il contenuto seguente. Questo codice genera completamenti.
import com.azure.core.util.BinaryData; import com.azure.messaging.eventgrid.EventGridEvent; import com.azure.messaging.eventgrid.EventGridPublisherClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; 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 java.util.List; import java.util.function.Consumer; @SpringBootApplication public class EventGridSampleApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventGridSampleApplication.class); @Autowired EventGridPublisherClient<EventGridEvent> client; public static void main(String[] args) { SpringApplication.run(EventGridSampleApplication.class, args); } @Bean public Consumer<Message<String>> consume() { return message -> { List<EventGridEvent> eventData = EventGridEvent.fromString(message.getPayload()); eventData.forEach(event -> { LOGGER.info("New event received: '{}'", event.getData()); }); }; } @Override public void run(String... args) throws Exception { String str = "FirstName: John, LastName: James"; EventGridEvent event = new EventGridEvent("A user is created", "User.Created.Text", BinaryData.fromObject(str), "0.1"); client.sendEvent(event); LOGGER.info("New event published: '{}'", event.getData()); } }
Avviare l’applicazione. Dopo l'avvio, l'applicazione produce log simili all'esempio seguente:
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Distribuire in Azure Spring Apps
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 offre la gestione del ciclo di vita usando monitoraggio e diagnostica completi, gestione della configurazione, individuazione dei servizi, integrazione 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.
Passaggi successivi
Per altre informazioni su Spring e Azure, passare al centro di documentazione di Spring in Azure.