如何使用ServiceStack使用内存队列缓冲请求?

时间:2018-01-20 19:57:58

标签: servicestack

此刻运行SS 4.0.54,我想要完成的是为客户提供服务,他们可以通过单向HTTP请求发送服务。

服务本身很简单。对于消息,打开数据库连接并保存一些值。

我不希望发生的事情是我在一分钟内收到大量请求,并且必须打开与数据库的1000个连接。

理想情况下,客户端将通过HTTP发送请求并填充队列。然后SS每隔X毫秒或如果已经排队了MAX个消息,则将它们发送给服务。

这样我们就没有排队等待太久的消息,而且我们一次只处理X个消息。

我查看了http://docs.servicestack.net/messaging,但有些内容没有点击。

1 个答案:

答案 0 :(得分:0)

InMemoryTransientMessageService没有缓冲区,它会在收到消息后立即对其进行处理。您需要使用其他MQ Servers中的一个将请求发布到已配置的MQ Broker中的专用队列,然后在HTTP请求的上下文之外串行处理,其并发性可以控制使用threadCount when registering the handler

注册MQ服务器后,任何请求sent to using the SendOneWay API(或/oneway pre-defined route)都会自动发布到已配置的MQ服务器。