Toa*_*oad 5 .net c# activemq-classic message-queue nms
我在.Net程序中使用ActiveMQ,我充斥着消息事件.
简而言之,当我得到一个队列事件'onMessage(IMessage receivedMsg)'时,我将消息放入一个内部队列,X线程就是这样做的.
起初,我在创建会话时有'AcknowledgementMode.AutoAcknowledge',所以我猜测队列中的所有消息都被吸入并放入内存队列(因为崩溃,所以一切都丢失了,这是冒险的).
所以我在创建会话时使用了'AcknowledgementMode.ClientAcknowledge',当工作人员准备好了消息时,它会在消息上调用'commit()'方法.但是,仍然会从队列中删除所有消息.
如何配置它只处理X个消息或处于内部队列中,并且不是所有内容都被立即"下载"了?
您使用的是 .NET 4.0 吗?您可以使用 BlockingCollection 。将其设置为可能包含的最大数量。一旦线程尝试放入多余的元素,Add 操作就会阻塞,直到集合再次低于阈值。
也许这可以起到节流的作用?
Rx框架中也有一个用于节流的API,但不知道它是如何实现的。如果您将 Queue 源实现为 Observable,则您可以使用此 API,但我不知道这是否满足您的需求。
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |