c# - 监听 Azure Web 作业通知的自定义 Webhook 接收器
问题描述
是否可以创建一个 Webhook 接收器,只要将某些记录插入数据库(由 Web Job 监控),它就会监听 Azure Web Job 通知?一旦 Web 挂钩收到通知,UI 需要向用户呈现通知。
解决方案
由于 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 用作服务或通知中心来实现此结果。
推荐阅读
- xpath - Odoo xpath 表达式规则
- django - 使用 where 查询的 Django REST 框架部分更新
- c# - 从用户输入的数字创建列表
- arrays - 如何简化这个 SUMPRODUCT 公式,--(B2:B7="Sunday") + --(B2:B7="Monday")
- authentication - 如何配置 tomcat 8 以支持 SCEP。MDM 所需
- android - 为什么 Room.databaseBuilder 函数需要上下文作为 Room 数据库中的参数?
- javascript - VS Code - 函数括号前的空格,for/while/if 语句
- asp.net-mvc - 使用 EntityFramwork 数据源的 SSRS 报告不显示在 ReportViewer 中
- reactjs - 如何使用 react 和 redux 从不同/其他页面滚动到视图?
- node.js - 如何在nodejs中的选项中循环url