【发布时间】:2021-06-01 12:48:53
【问题描述】:
有关消费者的文件称,这辆 MassTransit 遵循好莱坞原则,其中规定:“不要打电话给我们,我们会打电话给你。”但至少对于亚马逊的 SQS,这根本不是真的。 MassTransit 确实会轮询 Amazon SQS,但只是对消费者应用程序隐藏了它。我通过查看我创建的 SQS 队列 => 监控选项卡并检查“空接收数”发现了这一点。我发现我很快就接到了数千个电话,这远非理想,因为它们可以收费。
AWS 解决方案是使用“接收消息等待时间”属性调整队列的轮询频率,这意味着您有一种称为长轮询的东西。虽然我可以在 AWS 中手动设置它,但我宁愿在配置消费者时这样做。 AWS SDK 建议使用一个名为“ReceiveMessageWaitTimeSeconds”的属性,但我似乎无法设置它。如何在 MassTransit 中设置轮询频率?我可以在配置中的几个地方看到 WaitTimeSeconds,但根本没有记录。
玩了一会儿,这段代码似乎做了我想做的事,但我不确定它是否正确。有没有更好的办法?
var busControl = Bus.Factory.CreateUsingAmazonSqs(cfg =>
{
cfg.Host("eu-west-2", h =>
{
h.AccessKey("************");
h.SecretKey("***SECRET***");
});
//Specify a SQS message queue name
cfg.ReceiveEndpoint("my-queue", e =>
{
// create a consumer to read message from q
e.Consumer<EventConsumer>();
e.WaitTimeSeconds = 18;
//etc
【问题讨论】:
标签: amazon-web-services amazon-sqs masstransit