2
有沒有辦法控制進入ServiceStack主機的請求流?我正在尋找類似於Observable.Buffer的反應式擴展,或者將請求分頁到緩衝區,或者在消息流中實現類似的地方。主要處理交通洪水和尖峯。在ServiceStack中是否有緩衝和尋呼請求流的方法
有沒有辦法控制進入ServiceStack主機的請求流?我正在尋找類似於Observable.Buffer的反應式擴展,或者將請求分頁到緩衝區,或者在消息流中實現類似的地方。主要處理交通洪水和尖峯。在ServiceStack中是否有緩衝和尋呼請求流的方法
看看Messaging support in ServiceStack。有Redis和內存MQ主機,可以讓您推遲傳入請求的執行。
一旦您註冊了IMessageFactory
所有對/async
單向終點的呼叫都是immediately deferred to your registered MQ Broker。
SMessage演示項目顯示manually creating and publishing request dtos的示例,並在同一服務中同步執行它們。
一旦你希望你的MQ代理辦理登記的所有信息,如消息處理程序:
mqService.RegisterHandler<PostStatusTwitter>(ServiceController.ExecuteMessage, noOfThreads:2);
mqService.RegisterHandler<CallFacebook>(ServiceController.ExecuteMessage);
mqService.RegisterHandler<EmailMessage>(ServiceController.ExecuteMessage);
公佈將在MQ Broker隊列自動排隊和任何請求DTO在後臺快速處理因爲他們可以使用您指定的背景線程數量。
注意:延遲的請求不再位於HTTP上下文中,因此您無法訪問像自定義HTTP頭等HTTP參數。
劑量,這意味着沒有辦法做到這一點沒有mq?有沒有辦法鉤住HttpListenerBase中的HttpListener如何被使用? – Dmitry 2013-02-19 07:32:52
[InMemoryTransientMessageService](https://github.com/ServiceStack/ServiceStack/tree/master/src/ServiceStack.Common/Messaging)完全在內存中,因此不需要任何外部MQ代理。 – mythz 2013-02-19 07:49:33
這看起來更有希望,而且我喜歡你可以在需要擴展到實際流程時將它叉起來。你提到你一旦推遲消息就會丟失http上下文,但是我假設http會話保持活動狀態?否則你如何將數據返回給請求者? – Dmitry 2013-02-19 15:59:48