and*_*ndy 5 .net c# nservicebus producer-consumer
因为NServiceBus似乎不支持在消息队列中添加优先级机制,所以我想自己实现这一点。
public void Handle(DoAnAction message)
{
_messageManager.Insert(message);
}
Run Code Online (Sandbox Code Playgroud)
public void Run()
{
DoAnAction message;
while (true)
{
if (_messageManager.TryDequeue(out message))
{
doALongCall(message);
}
else
{
Thread.sleep(200);
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先这是一个好主意吗?我不喜欢这样丢失消息的想法。
更新:用例:我们有许多客户可以发送消息DoAnAction。该操作的处理需要一段时间。问题是当1个客户端决定发送200个DoAnAction时,所有其他客户端都必须等待2-3个小时,以便可以处理所有这些消息(FIFO)。相反,我想根据客户端的顺序处理这些消息。
因此,即使客户端A仍有200条消息要处理,当客户端B发送消息时,下一个也会排队。如果客户端B发送3条消息,则队列将如下所示:BA,BA,BA,A,A,A,...
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |