【发布时间】:2011-11-18 06:25:52
【问题描述】:
RabbitMQ 有没有一种类似于 MSSMQ 的使用方法,可以从队列中弹出 1000 条消息,然后插入数据库并从那里继续。
我似乎无法通过订阅频道然后在订阅中的 BasicDeliveryEventArgs 上执行 foreach 来执行此操作,并使用我想要在给定时间处理的最大消息数执行 If 语句。
提前致谢 然而,这仍然会从队列中获取所有 22k 消息
using (IConnection connection = factory.CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
channel.QueueDeclare("****", true, false, false, null);
var subscription = new Subscription(channel, "****", false);
int maxMessages = 5;
int i = 0;
foreach (BasicDeliverEventArgs eventArgs in subscription)
{
if (++i == maxMessages)
{
Console.WriteLine("Took 5 messages");
subscription.Ack(eventArgs);
break;
}
}
}
}
【问题讨论】:
-
我不明白这个问题,特别是“做一个 if 语句”部分。你能澄清一下吗?
-
对我来说仍然没有意义。你想完成什么?
-
我试图一次从队列中获取 1000 条消息,而不是一次将所有消息都下来