ASP.NET Core Web 应用程序作为 Azure 服务总线使用者/接收器

Posted

技术标签:

【中文标题】ASP.NET Core Web 应用程序作为 Azure 服务总线使用者/接收器【英文标题】:ASP.NET Core Web App as an Azure Service Bus Consumer/Receiver 【发布时间】:2019-12-12 16:37:45 【问题描述】:

我是 Azure 服务总线的新手,刚刚按照下面链接中的 MS 指南运行了 2 个 .NET Core 控制台应用程序。一个作为发送者,另一个作为接收者/消费者。

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues

我现在需要的是弄清楚如何配置 .NET Core MVC Web 应用程序,以接收来自队列的消息。

最终,我想要的是 2 个 .NET Core MVC Web 应用程序,它们既可以将消息添加到队列中,也可以从队列中接收消息。一个网站可能会将消息添加到另一个网站的队列中,并且在该网站拾取/使用该消息时,它可能需要将消息发送回原始网站。

我对 Web 应用程序中的“添加到队列”方面没有意见(因为这会在用户发生某些事件时发生),但我的困惑在于接收方/消费者方面。如何配置 Web 应用程序以(尽可能立即)获取到达特定服务总线队列的任何消息以进行处理?

【问题讨论】:

嗨@mar​​cusstarnes,我想知道你是否已经解决了这个问题以及如何解决的?为什么不只是在网络应用启动时启动侦听器并在应用停止时关闭侦听器? 【参考方案1】:

我建议查看eShopOnContainers - Microservices Architecture and Containers based Reference Application GitHub 项目并从那里开始。他们为此实现了一个小框架(请参阅项目中的 Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus)。

这是Catalog Service内部的样子:

protected virtual void ConfigureEventBus(IApplicationBuilder app)

    var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
    eventBus.Subscribe<OrderStatusChangedToAwaitingValidationIntegrationEvent, OrderStatusChangedToAwaitingValidationIntegrationEventHandler>();
    eventBus.Subscribe<OrderStatusChangedToPaidIntegrationEvent, OrderStatusChangedToPaidIntegrationEventHandler>();

【讨论】:

【参考方案2】:

我觉得这个 git 项目可以给你一个思路。

它有 2 个网络应用程序 - 一个是生产者,一个是消费者。在消费者中,您将看到侦听器注册的位置。

https://github.com/damienbod/AspNetCoreServiceBus

【讨论】:

以上是关于ASP.NET Core Web 应用程序作为 Azure 服务总线使用者/接收器的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core Web 应用程序作为 Azure 服务总线使用者/接收器

处理 ASP.NET Core Web API 对象属性绑定

Asp.Net Core子应用由于配置中重复添加模块会引起IIS错误500.19

asp.net core中托管SPA应用

为啥 .Mobile.cshtml 未在 ASP.NET Core C# Razor Pages Web 应用程序中呈现?

ASP.NET Core2.2+Quartz.Net 实现web定时任务