- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个用 .NET 4 编写的 Windows 服务,它创建包含无限运行的 while(running) 循环的多个线程。当我停止服务时,running bool 值变为 false,我们跳出 while 循环,一旦每个线程都这样做,服务最终停止。
在此期间,它调用 oMessageReceiver.Receive(TimeSpan.FromSeconds(30))。所以有时当我尝试停止服务时,我必须等待最多 30 秒才能让 Receive() 进程超时。
一种选择是将超时从 30 秒降低到更短的时间。我不确定它会导致什么性能损失,但由于该过程在没有 BrokeredMessage 的情况下不会执行任何工作,所以我真的希望尽可能经常和长时间地保持监听器打开。
我看到 MessageReceiver 上有一个 .BeginReceive() 方法。我有一种感觉,我可以在这里使用一种编程模式,它可以防止我的服务在等待接收超时时挂起。谁能描述如何在无限运行的 Windows 服务中使用 Begin/End APM 函数?
最佳答案
在新的 2.1 Windows Azure SDK 中,他们更改了服务总线 worker 角色模板以使用最近在 2.0 SDK 中引入的 OnMessage。您可以查看该模板以了解它使用哪些代码来开始。在这种方法中,您可以设置一个在消息到达时执行的操作。事实上,您还可以在 OnMessageOptions 上设置一个 MaxConcurrentCalls 属性。设置它时,它将为您处理额外的线程。如果您使用 OnMessage 方法,您将执行类似的操作,服务将关闭 QueueClient,使其不再处理。您还可以使用同步指示器跟踪任何线程上的消息是否正在处理,并仅等待该处理完成。
关于使用异步方法(开始/结束)的最佳方式,请查看“Best Practices for Leveraging Windows Azure Service Bus Brokered Messaging”,其中有几个示例。
关于c# - 如何取消 Microsoft ServiceBus MessageReceiver Receive 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751394/
Microsoft 将于 2021 年 11 月停止支持服务总线的经典 API(如 here 所述) 在我们的代码中,我们使用 WindowsAzure.ServiceBus包裹。这是一个 ol 软件
我正在迁移到 Azure.Messaging.ServiceBus,并注意到现在不再有名为 Label 的属性 这是一个巨大的问题,因为我们的服务总线规则中使用标签来过滤订阅上的消息。 使用 Azur
我正在迁移到 Azure.Messaging.ServiceBus,并注意到现在不再有名为 Label 的属性 这是一个巨大的问题,因为我们的服务总线规则中使用标签来过滤订阅上的消息。 使用 Azur
我创建了一个非常简单的控制台应用程序,它连接到 Azure ServiceBus 并发送一条消息。我尝试了 Microsoft 的最新库 (Microsoft.Azure.ServiceBus),但无
我有一个使用 Microsoft.Azure.ServiceBus 的消息发布者,需要将其替换为 Azure.Messaging.ServiceBus,因为它现已弃用。 这是代码: using Mic
我(尝试)使用此代码来创建 ServiceBus 队列: using Azure.Messaging.ServiceBus; using Azure.Messaging.ServiceBus.Admi
我正在尝试更新此函数以使用 Azure.Messaging.ServiceBus 并完全删除 Microsoft.Azure.ServiceBus,但似乎找不到任何相关资源。有人知道如何使用这个包向主
我(尝试)使用此代码来创建 ServiceBus 队列: using Azure.Messaging.ServiceBus; using Azure.Messaging.ServiceBus.Admi
我正在尝试更新此函数以使用 Azure.Messaging.ServiceBus 并完全删除 Microsoft.Azure.ServiceBus,但似乎找不到任何相关资源。有人知道如何使用这个包向主
我的客户端是在框架 4.5.1 上运行的 WebForm(使用 Microsoft.ServiceBus 1_1,我的服务器是在 azure 上运行的 .netcore。 服务总线在 Azure 上运
我的客户端是在框架 4.5.1 上运行的 WebForm(使用 Microsoft.ServiceBus 1_1,我的服务器是在 azure 上运行的 .netcore。 服务总线在 Azure 上运
我已开始使用 Azure 中的 Azure 服务总线。通过互联网上的一些引用资料,人们似乎使用 Microsoft.ServiceBus.Messaging 中的 BrokeredMessage 类,
我有一段时间编写的客户端使用旧库并调用 GetBody()接收消息时读取正文。 现在我有了新客户 Microsoft.Azure.ServiceBus (发送消息)据我所知总是使用 Stream .
我有几个网站在 Azure 中运行,大量使用 ServiceBus(也在 Azure 中托管),全部位于一个区域。 有时(每 2-3 天一次)我同时在所有网站上出现相同的错误(在阅读/等待消息期间):
我知道 Rebus 完全有能力将消息从 A 点传输到 B(使用 MSMQ 作为传输层)。为了让事情完全清楚,Rebus 是否也能够进行一对多消息传递,即从 A 点发送的消息应该在 B 点和 C 点结束
在 SOA 项目中使用服务总线架构的优缺点是什么? 您会推荐哪些建议的开源服务总线平台? 提前致谢 最佳答案 我认为服务总线的优缺点与您项目中的要求有关。它可以根据需要进行调整。 您可以使用 JMS
在代码中我需要原子地: //write to a database table //publish EventA to service bus //write to another database
我对使用服务总线和其他 Azure 功能还很陌生。在 Azure 门户上手动创建服务总线后,我尝试弄清楚如何自动实现这一点。经过一段时间的阅读后,我认为使用 azure 资源管理器应该是正确的选择。仅
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在将 Microsoft Azure ServiceBus 用于队列消息,并使用 WCF 进行订阅。我正在尝试实现重试逻辑。我使用 Peak/Lock 查看消息,然后必须对消息进行一些本地处理。如
我是一名优秀的程序员,十分优秀!