azure - Azure 上的公共(public)交通 MaxConcurrentCalls 设置被忽略

标签 azure masstransit

我在 Azure 上使用 MassTransit 并在总线上配置 MaxConcurrentCalls 时遇到问题。我有一个进程要求一次执行 1 条消息,但我无法使用总线配置来实现这一点。 例如,在总线配置期间,我设置了以下内容

busConfigurator.MaxConcurrentCalls = 1;
busConfigurator.PrefetchCount = 0;

注册消费者后,我立即向端点发送 3 条消息,并立即创建 3 个消费者实例并开始处理。下面是来自 Log4Net 的日志片段。

我想知道是否有其他人遇到过这个问题以及他们如何解决它,或者知道我可能做错了什么。从下面的日志可以看出,这些消息立即开始执行,尽管每条消息都需要大约 10-15 秒的时间来处理。

[2017-02-03 16:48:18,410]   [DEBUG] [13]    [svcbus.Consumers.SellerPageConsumer]   [Consume]   []  [Loading page https://....... ]     
[2017-02-03 16:48:18,410]   [DEBUG] [14]    [svcbus.Consumers.SellerPageConsumer]   [Consume]   []  [Loading page https://....... ]     
[2017-02-03 16:48:18,420]   [DEBUG] [23]    [svcbus.Consumers.SellerPageConsumer]   [Consume]   []  [Loading page https://....... ]     

最佳答案

更新
我查看了 Azure 配置属性。
配置接收端点时,您可以在那里设置 MaxConcurrentCalls 和 PrefechCount。
应该可以工作

configurator.ReceiveEndpoint(host,"QueueName", re =>
{
    re.MaxConcurrentCalls = 1;
    re.PrefetchCount = 1;
    //configure consumers & other stuff here ...
});

旧答案
不是特定于azure的,但是在RabbitMQ上,我通过在配置器对象上调用UseConcurrencyLimit来设置最大并发消费者 例如

bus = MassTransit.Bus.Factory.CreateUsingRabbitMq(configurator =>
{
    configurator.UseConcurrencyLimit(options.MaxConcurrentConsumers);
    . . .
}

Azure 配置器上有类似的东西吗?

关于azure - Azure 上的公共(public)交通 MaxConcurrentCalls 设置被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42029391/

相关文章:

azure - 错误 WAT200 : No default service configuration "ServiceConfiguration.cscfg" could be found in the project

python - 将 XML 文件内容发送到事件中心并从 Databricks 读取它

sql-server - 尝试组合案例函数的列

azure - 如何正确测试 azure 机器人服务

c# - MassTransit 在 RabbitMQ 关闭时尝试无限连接

rabbitmq - 我可以在大众运输中的端点配置中使用 UsePartitioner 来对传递到同一队列的多种消息类型进行分区吗

c# - 为什么 Azure 服务总线认为未设置 DefaultTimeToLive 属性?

wcf - Azure 服务总线中继 - 服务重新启动后出现 502 Bad Gateway

c# - .NET - 如何正确设置函数的 Azure 服务总线队列/主题

c# - MassTransit:是否可以非通用地注册处理程序?