C# - ActiveMQ - 消费者任务

问题描述 投票:-1回答:1

假设我们在ActiveMQ中有一个队列,一个向该队列发送消息的客户端(生产者)和一个从队列中获取消息的服务器(消费者)。

在服务器端,消费者有一个消息监听器,类似于。

consumer.Listener += ConsumerOnListener;

而ConsumerOnListener的实现是这样的。

private void ConsumerOnListener(IMessage message)
{
     var textMessage = message as ITextMessage;
     // validate textMessage

     // more code here...eg. save to databse,logging etc. (part-a)

     Task.Factory.StartNew(() =>
     { 
         // do something else here (part-b)
     });
}

上面的主要思想是不需要等待。乙方 在处理下一条消息之前,将被执行。想象一下 乙方 做一些完全属于自己的事情,可能成功,也可能失败(fire-and-forget)。

所以,这里的问题是,是否可以在ConsumerOnListener里面使用Tasks。这会不会以某种方式 "阻塞 "队列?

c# .net activemq
1个回答
0
投票

假设 Task 是异步的,那么它不应该阻塞监听器或队列本身的执行。通常在这样的用例中,通过简单地增加消费者监听器的数量来增加并发性,但让监听器启动自己的异步线程、任务等也是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.