具有辅助角色的 Azure 服务总线主题和订阅

所以我最近得到了使用的需要Service Bus Topic and Subscriptions,我已经关注了很多文章和教程。我已经能够成功地实现 Microsoft 的服务总线入门主题,并且还成功地使用Visual Studio 2017's Worker Role模板来访问数据库。

但是,我对如何正确地“结合”两者感到困惑。虽然服务总线入门主题文章展示了如何创建 2 个应用程序,一个用于发送,一个用于接收然后退出,但该Worker Role模板似乎无休止地循环使用await Task.Delay(10000);.

我不确定如何正确地“网格化”两者。从本质上讲,我希望我Worker Role能一直活着并永远聆听订阅的条目(或直到它明显退出)。

任何指导都会很棒!

PS:如果您有兴趣,我已经问过一个相关的问题,关于我应该在StackExchange - Software Engineering 的案例场景中使用的适当技术。


using System;

using System.Text;

using System.Threading.Tasks;

using Microsoft.Azure.ServiceBus;


namespace TopicsSender {

    internal static class Program {

        private const string ServiceBusConnectionString = "<your_connection_string>";

        private const string TopicName = "test-topic";

        private static ITopicClient _topicClient;


        private static void Main(string[] args) {

            MainAsync().GetAwaiter().GetResult();

        }


        private static async Task MainAsync() {

            const int numberOfMessages = 10;

            _topicClient = new TopicClient(ServiceBusConnectionString, TopicName);


            Console.WriteLine("======================================================");

            Console.WriteLine("Press ENTER key to exit after sending all the messages.");

            Console.WriteLine("======================================================");


            // Send messages.

            await SendMessagesAsync(numberOfMessages);


            Console.ReadKey();


            await _topicClient.CloseAsync();

        }


潇潇雨雨
浏览 192回答 2
2回答

慕的地8271018

考虑到更新问题 Update #1 (2018/08/09) 的复杂性,我提供了一个单独的答案。发送方和接收方使用不同的库。发件人 -&nbsp;Microsoft.Azure.ServiceBus接收器 -&nbsp;WindowsAzure.ServiceBusMicrosoft.Azure.ServiceBus 将消息对象作为 Message,其中 WindowsAzure.ServiceBus 具有 BrokeredMessage。Microsoft.Azure.ServiceBus 中有一个RegisterMessageHandler方法可用,这是 WindowsAzure.ServiceBus 中 client.OnMessage() 的替代方法。通过使用它,侦听器将消息作为 Message 对象接收。这个库支持异步编程,正如你所期望的。请参阅此处获取来自两个库的示例。

至尊宝的传说

如果您使用的是 Visual Studio,则有一个默认模板可用于使用服务总线队列创建 Azure 云服务和辅助角色。您需要在 WorkerRole.cs 中使用 SubscriptionClient 更改 QueueClient。然后,工作者角色将保持活动状态,监听来自主题订阅的消息。您可以在此处找到示例。您应该在云服务中使用 Service Bus Queue 创建 Worker 角色
打开App,查看更多内容
随时随地看视频慕课网APP