当前位置: 首页 > 知识库问答 >
问题:

使用Java/Spring连接Azure事件网格和服务总线

颛孙玉石
2023-03-14

我有一个场景,每当Azure Service bus的队列/主题中有消息时,Azure ServiceBus就会将事件发送到事件网格。那么,我如何在Java/Spring中建立连接,使用事件网格接收事件,并使用服务总线提取消息。要在Java/Spring中建立与事件网格和Azure服务总线的连接,需要进行哪些配置?另外,在应用程序端(application.yml或properties文件)必须进行哪些配置才能包括连接字符串等内容。?

共有2个答案

薛楷
2023-03-14

Azure服务总线到事件网格集成

当队列中有消息时,服务总线现在可以向事件网格发出事件;当没有接收者时,服务总线可以向订阅发出事件。您可以创建对服务总线名称空间的事件网格订阅,侦听这些事件,然后通过启动接收器对事件作出反应。

要启用该功能,您需要以下项目:

  • 具有至少一个服务总线队列的服务总线高级命名空间或具有至少一个订阅的服务总线主题。
  • 参与者访问服务总线命名空间。导航到Azure门户中的服务总线命名空间,然后选择访问控制(IAM),然后选择角色分配选项卡。验证您是否拥有对命名空间的贡献者访问权限。
  • 此外,需要为服务总线命名空间订阅事件网格。此订阅从事件网格接收通知,通知有消息要接收。典型的订阅者可以是Azure应用服务的逻辑应用功能、Azure功能或与Web应用联系的Web钩子。订户然后处理消息。

有关详细信息,请查看此Microsoft文档。

选中此项以使用Azure函数连接两者。

检查此文档以使用逻辑应用程序连接这两个。

Azure CLI:

namespaceid=$(az resource show --namespace Microsoft.ServiceBus --resource-type namespaces --name "<service bus namespace>" --resource-group "<resource group that contains the service bus namespace>" --query id --output tsv

az eventgrid event-subscription create --resource-id $namespaceid --name "<YOUR EVENT GRID SUBSCRIPTION NAME>" --endpoint "<your_endpoint_url>" --subject-ends-with "<YOUR SERVICE BUS SUBSCRIPTION NAME>"

PowerShell:

$namespaceID = (Get-AzServiceBusNamespace -ResourceGroupName "<YOUR RESOURCE GROUP NAME>" -NamespaceName "<YOUR NAMESPACE NAME>").Id

New-AzEVentGridSubscription -EventSubscriptionName "<YOUR EVENT GRID SUBSCRIPTION NAME>" -ResourceId $namespaceID -Endpoint "<YOUR ENDPOINT URL>” -SubjectEndsWith "<YOUR SERVICE BUS SUBSCRIPTION NAME>"
勾炳
2023-03-14

您的需求可以通过azure function app轻松实现。

将服务总线队列/主题设置为接收消息的函数的触发器。

并使用Azure SDKJava将事件发送到事件网格:

https://docs.microsoft.com/en-us/java/api/overview/azure/eventgrid/client?view=azure-java稳定

https://docs.microsoft.com/en-us/java/api/overview/azure/messaging-eventgrid-readme?view=azure-java稳定

 类似资料:
  • 我尝试将Azure服务总线与ApacheQPID和Spring与事务集成。 但Azure服务总线AMQP实现似乎不支持事务。这是真的吗?我没有找到相关信息。 这是我的JMS配置 这是我的spring集成片段: 它与session transact=“false”配合使用,但与session transact=“true”配合使用时会产生错误: QPID跟踪

  • 另一个用户'sJohnston'问了一个与我的问题相关的问题: 在进行了您建议的更改后,我得到了以下错误: 连接到Azure服务总线:log4j:warn找不到记录器(com.microsoft.windowsazure.services.servicebus.ServiceBusContract)的追加器。log4j:警告请正确初始化log4j系统。log4j:警告有关详细信息,请参阅http:

  • 我需要将一条消息从运行在SQL Server2014下的SSIS包放入Azure ServiceBus队列中。正如本文所建议的:从ssis连接到azure服务总线队列,我编写了一个引用“azure SDK2.9”的脚本任务。这种方法适用于Azure存储帐户处理Blob(引用Microsoft.WindowsAzure.Storage程序集),但不适用于Azure存储总线(引用Microsoft.S

  • 我正在使用服务总线溢价来创建事件订阅(事件网格)和我正在使用Webook(逻辑应用endpoint)的endpoint。 我的用例是:无论何时在服务总线主题中收到消息,事件都应该触发,并且应该调用webhook。 webhookendpoint是逻辑应用程序URI。 问题:对于主题中的15-20条消息,事件将被触发,逻辑应用程序将被触发,之后,即使对于任意数量的消息,事件也不会被触发。 注意:我在

  • 我有一个名为“状态更改”的Azure服务总线主题,它有一个名为“混响”的订阅。我正在尝试使用设置订阅主题的方法,但出现错误: 我一直在使用这篇博客文章来尝试让一切正常运行:http://ramblingstechnical.blogspot.co.uk/p/using-azure-service-bus-with-spring-jms.html 我可以使用向主题添加消息,并使用Azure文档中概述

  • 我试图找到一些Spring Cloud数据流和Azure服务总线设置的示例。. 我找到了https://github.com/microsoft/spring-cloud-azure/tree/master/spring-cloud-azure-stream-binder/spring-cloud-azure-servicebus-topic-stream-binder,但它仍然在RC中,我没有看