Моя очередь служебной шины ранее обрабатывала одно сообщение за раз. Я хотел изменить его, чтобы сообщения помещались в очередь, чтобы обрабатывать их массово каждые X секунд. Сначала я сделал следующее:
var messagingFactorySettings = new MessagingFactorySettings
{
NetMessagingTransportSettings = {
BatchFlushInterval = TimeSpan.FromMilliseconds(10000) },
TokenProvider = credentials
};
Теперь я хочу получать сообщения, но, похоже, мне нужно выполнить этот бесконечный цикл while, чтобы добраться до них:
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 не есть какое-то влияние?