2

有没有办法控制进入 ServiceStack 主机的请求流。我正在寻找响应式扩展中的Observable.Buffer之类的东西,或者一种将请求分页到缓冲区中的方法,或者在消息流中实现类似这样的东西的地方。主要是处理流量泛滥和尖峰。

4

1 回答 1

1

查看ServiceStack 中的消息传递支持。Redis 和 In Memory MQ 主机允许您延迟执行传入请求。

一旦您注册了对单向端点的IMessageFactory所有调用,就会立即推迟到您注册的 MQ 代理/async

SMessage 演示项目展示了手动创建和发布请求 dto与在同一服务中同步执行它们的示例。

一旦注册了您希望 MQ 代理处理的所有消息的消息处理程序,例如:

mqService.RegisterHandler<PostStatusTwitter>(ServiceController.ExecuteMessage, noOfThreads:2);
mqService.RegisterHandler<CallFacebook>(ServiceController.ExecuteMessage);
mqService.RegisterHandler<EmailMessage>(ServiceController.ExecuteMessage);

任何发布的请求 DTO 都将自动在 MQ 代理队列中排队,并使用您指定的后台线程尽可能快地在后台处理。

注意:延迟请求不再在 HTTP 上下文中,因此您无法访问自定义 HTTP 标头等 HTTP 参数。

于 2013-02-19T07:16:45.213 回答