Использование Сетка событий Azure в Spring
В этой статье показано, как использовать Сетка событий Azure для отправки события в раздел и использования очереди служебная шина в качестве обработчика событий для получения в приложении Spring Boot.
Служба Сетка событий Azure — это полностью масштабируемая полностью управляемая служба распространения сообщений Pub Sub, которая предлагает гибкие шаблоны потребления сообщений с помощью протоколов MQTT и HTTP.
Необходимые компоненты
Подписка Azure — создайте бесплатную учетную запись.
Пакет средств разработки Java (JDK) версии 8 или более поздней.
Apache Maven версии 3.0 или более поздней.
Экземпляр раздела сетки событий. Если у вас его нет, см. статью "Создание пользовательского раздела" или домена в Сетка событий Azure.
Экземпляр очереди служебная шина. Если у вас его нет, см. статью "Создание очереди" в портал Azure.
Приложение Spring Boot. Если у вас его нет, создайте проект Maven с помощью Spring Initializr. Обязательно выберите Проект Maven и выберите Java версии 8 или более поздней.
Подписка на события пользовательского раздела
Выполните следующие действия, чтобы создать подписку на события, чтобы сообщить сетке событий отправлять события в очередь служебная шина:
- В портал Azure перейдите к экземпляру раздела сетки событий.
- Выберите подписки на события на панели инструментов.
- На странице "Создание подписки на событие" введите значение имени для подписки на события.
- Для типа конечной точки выберите служебная шина очередь.
- Выберите конечную точку и выберите созданный ранее экземпляр очереди служебная шина.
Отправка события по Сетка событий Azure и получение по очереди Служебная шина Azure
С помощью ресурса Сетка событий Azure можно отправить событие с помощью Spring Cloud Сетка событий Azure. С помощью ресурса очереди Служебная шина Azure в качестве обработчика событий можно получить событие с помощью Spring Cloud Azure Stream Binder для служебная шина.
Чтобы установить модуль Spring Cloud Сетка событий Azure Starter и модуль Azure Stream Binder Spring Cloud служебная шина, добавьте следующие зависимости в файл pom.xml:
Выставление счетов за материалы Spring Cloud (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.12.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Примечание.
Если вы используете Spring Boot 2.x, обязательно установите для нее
spring-cloud-azure-dependencies
значение4.18.0
. Этот счет материалов (BOM) должен быть настроен в<dependencyManagement>
разделе pom.xml файла. Это гарантирует, что все зависимости Azure Spring Cloud используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в статье "Какая версия Spring Cloud Azure должна использоваться".Артефакт Spring Cloud Сетка событий Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>
Артефакт Azure Stream Binder Spring Cloud служебная шина:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Добавление кода приложения
Выполните следующие действия, чтобы настроить приложение для отправки события с помощью сетки событий и получения с помощью очереди служебная шина.
Настройте учетные данные Сетка событий Azure и служебная шина в файле конфигурации application.yaml, как показано в следующем примере:
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 см. в центре документации об использовании Spring в Azure.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по