Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как использовать Сетка событий Azure для отправки события в раздел и использования очереди служебная шина в качестве Event Handler для получения в приложении Spring Boot.
Служба Сетка событий Azure — это высокомасштабируемая полностью управляемая служба распространения сообщений pub Sub, которая предлагает гибкие шаблоны потребления сообщений с помощью протоколов MQTT и HTTP.
Необходимые условия
Подписка Azure — создайте бесплатно.
Java платформа разработки (JDK) версии 8 или более поздней.
Apache Maven версии 3.0 или более поздней.
Экземпляр темы сетки событий. Если у вас его нет, см. раздел Создание настраиваемой темы или домена в Сетка событий Azure.
Экземпляр очереди в служебная шина. Если у вас его нет, см. Создание очереди на портале Azure.
Приложение Spring Boot. Если у вас его нет, создайте проект Maven, используя Spring Initializr. Обязательно выберите Maven Project и выберите Java версии 8 или более поздней.
Подписка на настраиваемую тему
Выполните следующие действия, чтобы создать подписку на события, чтобы сообщить сетке событий отправлять события в очередь служебная шина:
- На портале Azure перейдите к экземпляру раздела сетки событий.
- Выберите подписки на события на панели инструментов.
- На странице "Создание подписки на событие" введите значение имени для подписки на события.
- Для Типа конечной точки выберите очередь служебная шина.
- Выберите Выберите конечную точку, а затем выберите созданный ранее экземпляр очереди служебная шина.
Отправка события с помощью Сетка событий Azure и получение в очереди Служебная шина Azure.
С помощью ресурса Сетка событий Azure можно отправлять события через Spring Cloud Сетка событий Azure. С использованием очереди Служебная шина Azure в качестве обработчика событий вы можете получать события, используя Spring Cloud Azure Stream Binder для служебная шина.
Чтобы установить модуль Spring Cloud Сетка событий Azure Starter и модуль Spring Cloud Azure Stream Binder служебная шина, добавьте следующие зависимости в файл pom.xml:
Акт технических спецификаций Spring Cloud Azure (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Заметка
Если вы используете Spring Boot 4.0.x, обязательно установите версию, указанную в
spring-cloud-azure-dependencies, на значение7.2.0.Если вы используете Spring Boot 3.5.x, обязательно задайте версию
spring-cloud-azure-dependenciesна6.3.0.Если вы используете Spring Boot 3.1.x-3.5.x, обязательно установите для нее версию
spring-cloud-azure-dependenciesна5.25.0.Если вы используете Spring Boot 2.x, обязательно установите версию
spring-cloud-azure-dependenciesна4.20.0.Эта ведомость материалов (BOM) должна быть сконфигурирована в
<dependencyManagement>разделе файла pom.xml. Это гарантирует, что все зависимости Spring Cloud Azure используют одну и ту же версию.Дополнительные сведения о версии, используемой для этого BOM, см. в разделе Какую версию Spring Cloud Azure я должен использовать.
Артефакт Spring Cloud Сетка событий Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>Артефакт Spring Cloud Azure Stream Binder для служебная шина:
<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Заметка
Microsoft рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток только в том случае, если более безопасные варианты, такие как управляемые удостоверения для подключений без паролей или ключей, невозможны. Для локальных операций на компьютере предпочтительнее использовать учетные данные пользователей для подключения без пароля или ключа.
Измените файл класса запуска, чтобы отобразить следующее содержимое. Этот код генерирует автодополнения.
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
Теперь, когда у вас есть приложение Spring Boot, работающее локально, пришло время переместить его в рабочую среду. Приложения Azure Spring упрощает развертывание приложений Spring Boot для Azure без каких-либо изменений кода. Служба управляет инфраструктурой приложений Spring, чтобы разработчики могли сосредоточиться на коде. Приложения Azure Spring обеспечивает управление жизненным циклом с помощью комплексного мониторинга и диагностики, управления конфигурацией, обнаружения служб, интеграции CI/CD, развертывания по схеме blue-green и прочее. Чтобы развернуть ваше приложение в Приложения Azure Spring, см. раздел Как развернуть первое приложение в Приложения Azure Spring.
Дальнейшие действия
Чтобы узнать больше о Spring и Azure, перейдите в Центр документации по Spring на Azure.