【发布时间】:2015-08-05 14:47:44
【问题描述】:
我的服务总线队列之前一次处理一条消息。 我想更改它以允许消息排队,这样我就可以每 X 秒批量处理它们。我最初是这样做的:
var messagingFactorySettings = new MessagingFactorySettings
{
NetMessagingTransportSettings = {
BatchFlushInterval = TimeSpan.FromMilliseconds(10000) },
TokenProvider = credentials
};
现在我想接收消息,但似乎我必须执行这个无限循环来获取它们:
while ((messages = myQueueClient.ReceiveBatch(1000).ToList()) != null)
{
foreach (var message in messages)
{ ...
据我了解,BatchFlushInterval 将允许请求累积 X 时间,因此我不会一一接收消息,而是批量接收消息。因此,我不确定为什么我不能像以前那样做:
myQueueClient.OnMessage((m) =>
{
但是批量版本:
myQueueClient.OnBulkMessage((listOfMessages) =>
{
我是否遗漏了什么,或者是不断轮询完成此任务的唯一方法?我的 BatchFlushInterval 似乎也被忽略了。我预计它只会每 10 秒检查一次新消息,但它会立即接收第一批消息,并且会立即处理任何进来的新消息。
假设我想每隔 X(即:1)秒从队列中提取 Y 条消息(即:1000)并立即处理它们,我该怎么做? 为什么BatchFlushInterval 没有任何影响吗?
【问题讨论】:
标签: c# azure message-queue servicebus azure-servicebus-queues