Spring에서 Azure Event Grid 사용
이 문서에서는 Azure Event Grid를 사용하여 토픽에 이벤트를 보내고 Service Bus 큐를 이벤트 처리기로 사용하여 Spring Boot 애플리케이션에서 수신하는 방법을 보여줍니다.
Azure Event Grid 서비스는 MQTT 및 HTTP 프로토콜을 사용하여 유연한 메시지 사용 패턴을 제공하는 확장성이 뛰어난 완전 관리형 Pub Sub 메시지 배포 서비스입니다.
필수 조건
Azure 구독 - 체험 구독 만들기
JDK(Java Development Kit) 버전 8 이상.
Apache Maven, 버전 3.0 이상.
Event Grid 토픽 인스턴스입니다. 없는 경우 Azure Event Grid에서 사용자 지정 토픽 또는 도메인 만들기를 참조하세요.
Service Bus 큐 인스턴스입니다. 큐가 없는 경우 Azure Portal에서 큐 만들기를 참조하세요.
Spring Boot 애플리케이션 없는 경우 Spring Initializr를 사용하여 Maven 프로젝트를 만듭니다. Maven 프로젝트를 선택하고 Java 버전 8 이상을 선택해야 합니다.
사용자 지정 항목 구독
다음 단계를 사용하여 Event Grid에 Service Bus 큐로 이벤트를 보내도록 이벤트 구독을 만듭니다.
- Azure Portal에서 Event Grid 토픽 인스턴스로 이동합니다.
- 도구 모음에서 이벤트 구독을 선택합니다.
- 이벤트 구독 만들기 페이지에서 이벤트 구독의 이름 값을 입력합니다.
- 엔드포인트 유형에 대해 Service Bus 큐를 선택합니다.
- 엔드포인트 선택을 선택한 다음, 이전에 만든 Service Bus 큐 인스턴스를 선택합니다.
Azure Event Grid로 이벤트 보내기 및 Azure Service Bus 큐 수신
Azure Event Grid 리소스를 사용하면 Spring Cloud Azure Event Grid를 사용하여 이벤트를 보낼 수 있습니다. Azure Service Bus 큐 리소스를 이벤트 처리기로 사용하면 Service Bus용 Spring Cloud Azure Stream Binder를 사용하여 이벤트를 수신할 수 있습니다.
Spring Cloud Azure Event Grid Starter 모듈 및 Spring Cloud Azure Stream Binder Service Bus 모듈을 설치하려면 pom.xml 파일에 다음 종속성을 추가합니다.
Spring Cloud AZURE 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>
참고 항목
Spring Boot 2.x를 사용하는 경우 버전을 .로 설정
spring-cloud-azure-dependencies
해야 합니다4.19.0
. 이 BOM(청구서)은 pom.xml 파일의 섹션에서 구성<dependencyManagement>
해야 합니다. 이렇게 하면 모든 Spring Cloud Azure 종속성이 동일한 버전을 사용합니다. 이 BOM에 사용되는 버전에 대한 자세한 내용은 어떤 버전의 Spring Cloud Azure를 사용해야 하는지를 참조하세요.Spring Cloud Azure Event Grid Starter 아티팩트:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>
Spring Cloud Azure Stream Binder Service Bus 아티팩트:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
애플리케이션 코딩
다음 단계를 사용하여 Event Grid를 사용하여 이벤트를 보내고 Service Bus 큐를 사용하여 수신하도록 애플리케이션을 구성합니다.
다음 예제와 같이 application.yaml 구성 파일에서 Azure Event Grid 및 Service Bus 자격 증명을 구성합니다.
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
시작 클래스 파일을 편집하여 다음 콘텐츠를 표시합니다. 이 코드는 완료를 생성합니다.
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()); } }
애플리케이션을 시작합니다. 시작 후 애플리케이션은 다음 예제와 유사한 로그를 생성합니다.
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Azure Spring Apps에 배포
이제 Spring Boot 애플리케이션을 로컬로 실행했으므로 이제 프로덕션으로 이동해야 합니다. Azure Spring Apps 를 사용하면 코드를 변경하지 않고도 Spring Boot 애플리케이션을 Azure에 쉽게 배포할 수 있습니다. 이 서비스는 개발자가 코드에 집중할 수 있도록 Spring 애플리케이션의 인프라를 관리합니다. Azure Spring Apps는 포괄적인 모니터링 및 진단, 구성 관리, 서비스 검색, CI/CD 통합, 파란색-녹색 배포 등을 사용하여 수명 주기 관리를 제공합니다. Azure Spring Apps에 애플리케이션을 배포하려면 Azure Spring Apps에 첫 번째 애플리케이션 배포를 참조하세요.
다음 단계
Spring과 Azure에 대한 자세한 사항은 Azure의 Spring 설명서 센터를 참조합니다.