是否有办法控制进入ServiceStack主机的请求流。我在反应式扩展中寻找类似Observable.Buffer的东西,或者将请求分页到缓冲区中的方法,或者在消息流中实现类似这样的地方。主要是处理交通洪水和尖峰。
答案 0 :(得分:1)
查看Messaging support in ServiceStack。 Redis和内存中的MQ主机允许您推迟传入请求的执行。
注册IMessageFactory
后,/async
个单向终端的所有来电均为immediately deferred to your registered MQ Broker。
SMessage演示项目显示了manually creating and publishing request dtos vs在同一服务中同步执行它们的示例。
一旦注册了您希望MQ代理处理的所有消息的消息处理程序,例如:
mqService.RegisterHandler<PostStatusTwitter>(ServiceController.ExecuteMessage, noOfThreads:2);
mqService.RegisterHandler<CallFacebook>(ServiceController.ExecuteMessage);
mqService.RegisterHandler<EmailMessage>(ServiceController.ExecuteMessage);
发布的任何请求DTO将自动在MQ Broker队列中排队,并在后台尽可能快地使用您指定的后台线程进行处理。
注意:延迟请求不再出现在HTTP上下文中,因此您无法访问自定义HTTP标头等HTTP参数。