Ron*_*Ron 4 servicebus azure azure-queues azureservicebus
我有非常基本的架构:
Web API 队列中的消息在 Queue 和 Worker(后台处理服务)中出队并处理消息。
问题是 Web API 不知道 Worker 何时处理了消息。
Worker 是否可以提醒队列消息已成功处理,并且队列将“处理完成消息”事件发送回 Web API?
我正在考虑的一种解决方案:
Web API 对消息进行排队后,它每隔几秒检查一次消息状态:
如果消息状态为“Peck-Lock” -消息仍在处理中。
如果在队列中找不到消息- 消息已被处理(成功或不成功并不重要)。
但是微软没有现成的解决方案吗?
许多需要这种类型的报告的体系结构是由一个单独的队列处理的,从处理器到请求者。这就是为什么BrokeredMessage 对象上实际上有一个ReplyTo 属性。方法是请求者也有自己的队列来监视。当它创建消息时,它会设置 ReplyTo 属性并发送该消息。当工作进程处理消息时,它使用原始消息提供的队列路径将完成消息发送回请求者。
根据您的需要,您的整个前端可能有一个队列,或者每个实例可能有自己的队列。请注意,在具有瞬态机器的分布式系统中,让每个 Web API 前端拥有自己的队列可能会带来一些复杂性。
通常,当请求者需要知道某件事已完成以便能够以某种方式进行传达时,就会执行此操作。例如,一个网络请求进来进行处理。请求被放入队列并在后端处理,完成消息返回到前端,前端接收该消息并向用户发送通知(在某些情况下通过 SignalR,它有一个背板)您不必担心哪个前端服务器收到了响应消息)。
除了通过直接与请求者通信或通过队列来传达完成情况之外,没有任何方法可以让您监视来自另一台计算机的消息的完成情况。检查消息状态不会对您有帮助,因为除非您定期获得对该消息的新引用,否则该信息不会改变,如果您要处理大量消息,则这种情况将无法很好地扩展。
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |