如何为ServiceStack RabbitMQ使用者创建多个线程?

时间:2014-08-06 13:31:58

标签: multithreading servicestack rabbitmq

我需要在我的ServiceStack应用程序中集成MQ功能。我在AppHost中注册了Message Handler。我的ServiceStack请求(Post)的处理程序将消息发布到MQ代理。我为该消息创建了消费者。这一切都很好。

现在我需要的是让多个线程可用来使用消息并处理它。我已经读过RabbitMQ的ServiceStack实现提供了为操作指定多个线程的功能: https://github.com/ServiceStack/ServiceStack/wiki/Rabbit-MQ#allocating-multiple-threads-for-specific-operations

但我无法指定这些线程。我已将处理程序注册为

container.Register(c => new RabbitMqServer());

var mqServer = container.Resolve();

mqServer.RegisterHandler(ServiceController.ExecuteMessage,noOfThreads:4);

但它给了我错误,因为RegisterHandler没有参数' noOfThreads'。 我正在为ServiceStack RabbitMQ运行4.0.24.0版本。我还缺少其他的东西吗?

1 个答案:

答案 0 :(得分:3)

noOfThreads is only available on the RabbitMqServer而不是通用IMessageService的功能。您需要将从Container.Resolve()返回的IMessageService转换为RabbitMqServer。

container.Register<IMessageService>(c => new RabbitMqServer());
var mqServer = (RabbitMqServer)container.Resolve<IMessageService>();
mqServer.RegisterHandler<CallBatchMessage>(ServiceController.ExecuteMessage, noOfThreads: 4);