rabbitmq MassTransit ConfigureBatchPublish -发送重复批次a

yvt65v4c  于 11个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(98)

我很难理解ConfigureBatchPublish到底在做什么。
我尝试在公共交通巴士上使用这种配置:

h.ConfigureBatchPublish(cfg =>
{
    cfg.Enabled = true;
    cfg.MessageLimit = 100;
    cfg.Timeout = TimeSpan.FromMilliseconds(100);
    cfg.SizeLimit = 1024;
});

字符串
然后,我尝试使用IPublishEndpointISendEndpoint发送/发布了几条消息,大约1000条。我一条一条地发送,不涉及Task.WhenAll。通过描述,即:
MassTransit在将消息发送到RabbitMQ之前会短暂缓冲消息,以增加消息吞吐量。虽然建议使用默认值,但可以配置批处理选项。
我期望的是,而不是一个接一个地发布它们,大众运输将尝试等待,直到一批100个被填满,或者如果100毫秒已经过去。但我看到的是,即使应用了这个配置,消息也是一个接一个地发送的,而且,我现在为每个Send方法的调用等待100毫秒。
此外,更奇怪的是,我尝试将这些设置与ISendEndpoint上的SendBatch方法相结合。我将1000条记录分成100条,并决定对它们使用SendBatchMassTransit现在缓存每100条记录,并在下一次SendBatch调用时重新发送。如下所示:

  • 第一批- 100条记录;
  • 第二批- 200条记录(100条新记录和100条缓存记录);
  • 第三批- 300条记录(100条新记录和200条缓存记录);
  • 如此这般,如此坚固;

这怎么可能

vdzxcuhz

vdzxcuhz1#

1.如果你发送多条消息,你应该 * 不 * await每次调用Send
1.你的批量发布超时 * 太高了 *。我从来没有把它设置得高于3-4毫秒。没有意义,它 * 只是 * 用于代理场景的高延迟。
1.您的大小限制 * 太低 *。它应该是默认值,除非您有特定的原因要更改它(您可能没有)。
TL;DR -你想多了。用默认设置启用它,不要等待每个调用来发送/发布。

相关问题