【问题标题】:How to subscribe message from Azure service bus topic subscription to web api?如何从 Azure 服务总线主题订阅消息订阅 Web api?
【发布时间】:2019-02-12 03:46:56
【问题描述】:

我们有多个 webapi(微服务)。为了在这些微服务之间进行通信,我们使用 Azure 服务总线 Topic\Subscription。 webapi 控制器如何获取消息订阅,以便 api 可以处理消息并插入数据库。我不想使用任何天蓝色的功能。我想在我的 webapi(直接微服务)中订阅消息。

【问题讨论】:

  • 需要调用控制器。所以轮询/长轮询不是一种选择。您可以利用 Azure 事件网格来调用控制器(作为 webhook),但此时这仅在高级层上可用,并且适用于消息吞吐量较低的系统。如果您使用的是 Azure 应用服务,则替代方法可能是 WebJob。即便如此,这种设置也让人感觉有些不对劲。

标签: azure asp.net-core-webapi azure-servicebus-topics


【解决方案1】:

您可以为主题创建一个客户端来订阅消息并设置选项以在完成必要的过程后完成。 请找到以下示例代码,您可以在其中阅读某个主题的订阅消息。

您可以使用 WindowsAzure.ServiceBus -Nuget 包

示例代码:

using Microsoft.ServiceBus.Messaging;
using Microsoft.ServiceBus;
var con = "your connection string for the topic";
var topic = "your topic name";
var subclient = SubscriptionClient.CreateFromConnectionString(con, topic, "yourSubscriptionName");

OnMessageOptions options = new OnMessageOptions();
options.AutoComplete = false;
client.OnMessage(message =>
{
Console.WriteLine("Message:" + message.GetBody<string>());
message.Complete();
}, options);

您可以将它放在单独的方法中并根据需要使用。 要进行轮询,您可以创建一个 webjob,或者您可以放置​​触发 web api 的代码,以便它同时轮询消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2017-10-23
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多