我正在为我们的新服务使用 azure 服务结构。
对于面向客户端的网关,我有一个使用 Web API 端点获取请求的无状态服务,实际工作是使用可靠的无状态参与者完成的。
正如 Sean McKenna - MSFT 所建议的在此 question ,我将传入请求放入 ReliableQueue 并将结果存储在 ReliableDictionary 中。
我不明白如何实现这一点,我在哪里定义 ReliableQueue??很明显(?)在 Web API Controller 上将作业排入队列,但是我在哪里以及何时出列对象?没有事件触发告诉我添加了一个对象?
正如你所看到的,我会喜欢这方面的一些帮助
谢谢
最佳答案
在您提到的问题中,我正在描述 WordCount sample 中显示的模式.
在这种情况下,应用程序由无状态网关服务和有状态处理服务组成。客户端输入被发送到无状态网关,然后中继到有状态服务,在那里它最初保存在 ReliableQueue
中。 .同时,在 RunAsync
中运行着一个无限的 while 循环。方法从队列中取出项目并处理它们,结果存储在 ReliableDictionary
中。 .当您想要快速 ACK 回您收到(并安全地持久化!)其输入的客户端并且能够异步执行实际处理时,此模式非常有用。
请注意,如果您打算将状态存储在 ReliableQueue
中/ReliableDictionary
,使用无状态参与者进行处理可能没有太大值(value)。您最好将该逻辑移动到有状态服务中的类型中并在那里进行处理,因为您可能会为自己节省一个来回网络跳跃。
关于asp.net - Azure 服务结构 : IReliableQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34742321/