3

我有一个哲学问题。我们正在使用存储队列来处理“票证”。我们实现的方式是我们有一个后台服务(工作角色),它轮询存储队列并找出是否有任何票证要处理。我们所做工作的性质是季节性的。这意味着不会一直有票要处理。我们面临的问题是 - 由于多个工作角色实例不断地轮询存储队列,我们​​有成本影响,因为它只是太多的 GetMessage() 调用。

我遇到了具有基于事件功能的服务总线队列。我们有 OnMesage() 的概念,每当有新消息在服务总线队列上可用时,它就会被调用。

但我的问题是 - OnMessage() 是否继续并在内部调用 Receive()?这意味着它只是语法糖,在内部它仍在进行轮询,并且在服务总线队列案例中也会产生成本影响吗?

对此的任何见解都会有所帮助。

4

1 回答 1

2

Azure 服务总线客户端使用长轮询从代理检索消息。默认情况下,它设置为 1 分钟或消息到达时。因此,如果您有一条消息在 1 分钟之前出现,它将被检索,并且会出现另一个 1 分钟的民意调查。OnMessage/MessageHandler也不例外。它是在低级接收操作之上的更高级别的抽象。

于 2018-11-02T05:37:53.657 回答