如何解决MassTransit SQS 轮询频率
关于消费者的文件说,这个大众运输包含好莱坞原则,其中规定:“不要给我们打电话,我们会打电话给你。”但至少对于亚马逊的 SQS,这完全不是真的。 MassTransit 确实会轮询 Amazon SQS,但只是对消费者应用程序隐藏了它。我通过查看我创建的 SQS 队列 => 监控选项卡并检查“空接收数”发现了这一点。我发现我很快就接到了数千个电话,远非理想,因为它们可以收费。
AWS 的解决方案是通过属性“接收消息等待时间”来调整队列的轮询频率,这意味着您有一种叫做长轮询的东西。虽然我可以在 AWS 中手动设置它,但我更愿意在配置我的使用者时这样做。 AWS 开发工具包建议了一个名为“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
解决方法
您可以将 WaitTimeSeconds
设置为更长的值以降低轮询频率。 SQS 没有推送,它总是包含一个 API 调用。
至于好莱坞原则,这是指 MassTransit,而不是经纪人要求的交通交互。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。