我需要在我的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版本。我还缺少其他的东西吗?
答案 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);