所以我最近得到了使用的需要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(); }
2 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
考虑到更新问题 Update #1 (2018/08/09) 的复杂性,我提供了一个单独的答案。
发送方和接收方使用不同的库。
发件人 - Microsoft.Azure.ServiceBus
接收器 - WindowsAzure.ServiceBus
Microsoft.Azure.ServiceBus 将消息对象作为 Message,其中 WindowsAzure.ServiceBus 具有 BrokeredMessage。
Microsoft.Azure.ServiceBus 中有一个RegisterMessageHandler方法可用,这是 WindowsAzure.ServiceBus 中 client.OnMessage() 的替代方法。通过使用它,侦听器将消息作为 Message 对象接收。这个库支持异步编程,正如你所期望的。
请参阅此处获取来自两个库的示例。
- 2 回答
- 0 关注
- 191 浏览
添加回答
举报
0/150
提交
取消