首页 > 解决方案 > 监听 Azure Web 作业通知的自定义 Webhook 接收器

问题描述

是否可以创建一个 Webhook 接收器,只要将某些记录插入数据库(由 Web Job 监控),它就会监听 Azure Web Job 通知?一旦 Web 挂钩收到通知,UI 需要向用户呈现通知。

标签: c#asp.net-mvcazureazure-webjobsasp.net-webhooks

解决方案


由于 Sumit Saini 没有发布他们的代码,我将添加我为使用 .Net Core的会议演示编写的代码。原始代码从事件网格接收事件,但很容易修改为使用简单的 webhook。

控制器定义一个端点来接收事件并将其传递给 SignalR:

[ApiController]
[Produces("application/json")]
public class EventHandlerController : Controller
{
    private readonly IHubContext<NotificationHub> _hubContext;

    public EventGridEventHandlerController(IHubContext<NotificationHub> hubContext)
    {
        _hubContext = hubContext;
    }

    [HttpPost]
    [Route("api/EventHandler")]
    public IActionResult Post([FromBody]object request)
    {

        object[] args = { request };

        _hubContext.Clients.All.SendCoreAsync("SendMessage", args);

        Console.WriteLine(truck);

        return Ok();
    }
}

集线器类中没有任何特殊代码 - 您只需将其定义为正常:

public class NotificationHub : Hub
{
    public async Task SendMessage(Message message)
    {
        await Clients.All.SendAsync("Notification", message);
    }
}

客户端也是一个标准的 SignalR 实现。

您可以在此处找到更通用的 SignalR 教程:https ://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-2.2&tabs=visual-studio

您还可以将SignalR 用作服务通知中心来实现此结果。


推荐阅读