gpt4 book ai didi

c# - 使用 SignalR 将数据从 Azure ServiceBus 消息队列广播到 Azure Web App

转载 作者:行者123 更新时间:2023-12-02 23:49:20 25 4
gpt4 key购买 nike

我有一个 Azure ServiceBus 消息队列,它从成熟的 Windows 应用程序接收消息。这部分效果很好(每分钟数十条消息)。我知道消息就在那里。 ServiceBus 命名空间类似于 dtx-ns,队列名称类似于 dtxrm001。

我还有一个完全开发的 MVC 5 Azure Web 应用程序。我想连接一个新的 View 页面,该页面使用 SignalR 从 Azure 服务总线消息队列接收消息。

我想做的就是通过访问网页来查看 ServiceBus 队列消息(来自运行成熟 Windows 应用程序的任何人)。

这基本上是传入的传感器数据,例如来自传感器的温度。

购买了 5 本 SignalR 书籍并花了 3 周的时间来研究这个问题后,我想我需要一些指导。是否向我的 Azure MVC 应用程序添加 Web 角色?我要添加 worker 角色吗?我是否使用依赖项注入(inject)和 SignalRBackplaneMessageBus?

似乎是一个简单的任务,但现在我不知道方法是什么?当您真正进入示例并尝试连接来自 ServiceBus 消息队列的消息的实际广播时,似乎没有什么意义。

以下是我尝试过的 MVC Web 应用程序启动的一些代码:

    Dim cn1 As String = "Endpoint=sb://dtx-ns.servicebus.windows.net/;SharedAccessKeyName=myname;SharedAccessKey=mykey"
Dim config As New ServiceBusScaleoutConfiguration(cn1, "dtx1")
config.TopicCount = 3
config.BackoffTime = New TimeSpan(1, 0, 1)
config.IdleSubscriptionTimeout = New TimeSpan(1, 0, 0)
config.MaximumMessageSize = 20000
config.MaxQueueLength = 50

GlobalHost.DependencyResolver.UseServiceBus(config)
GlobalHost.Configuration.TransportConnectTimeout = TimeSpan.FromSeconds(10)

app.UseCors(CorsOptions.AllowAll)
app.MapSignalR()

上面显示的端点是服务总线消息队列连接字符串的一部分。如果上面看起来正确,那么我该怎么做才能对集线器进行编程以从此连接发送消息?

我需要网络角色吗?我是否需要在添加到当前 MVC 应用程序的项目中以某种方式实现“背板集线器”?我被难住了。

最佳答案

您正在使用代码scale out SignalR via ServiceBus (所谓的 ServiceBus 底板 - 示例中令人困惑的 Web 角色实际上是您的 MVC 应用程序,它可以在应用程序服务中运行或作为 WebRole 运行。您的 SignalR Hub 与您的 Web 应用程序一起运行一般情况下)。对于在 Azure Web Apps 上运行时扩展 SignalR 本身的目的来说,这是正确的。但这不是你所要求的。

您要求的是从 ServiceBus 读取消息并将它们广播到您的 SignalR 连接的客户端。这是完全不同的用例。您可以使用几个选项来实现您的目标:

在这两种情况下,最不为人所知的事实是 SignalR 有 "native" .NET client将为您提供帮助(您可以从任何 .NET 应用程序连接到 SignalR,包括在 Windows Phone 或桌面上运行的应用程序)。

我不在这里提供任何代码示例,但我想我已经消除了您的疑虑。

<小时/>

关于c# - 使用 SignalR 将数据从 Azure ServiceBus 消息队列广播到 Azure Web App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39468287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com