【问题标题】:How to create multiple threads for ServiceStack RabbitMQ consumer?如何为 ServiceStack RabbitMQ 消费者创建多个线程?
【发布时间】:2014-09-29 11:15:43
【问题描述】:

我需要在我的 ServiceStack 应用程序中集成 MQ 功能。我已经在 AppHost 中注册了消息处理程序。我的 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 版本。我这里还有什么遗漏的吗?

【问题讨论】:

    标签: multithreading servicestack rabbitmq


    【解决方案1】:

    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);
    

    【讨论】:

    • 杰克逊,非常感谢!我真是个傻瓜,整天想把这种方式抛在脑后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多