rabbitmq - Mass Transit 在轻负载下跳过命令
问题描述
我最近构建了一个简单的公共交通服务来处理命令。如果我一次发送 3 个命令,它会正确消耗前 2 个命令,然后将第三个命令放入*_skipped
队列中。我的理解是,如果端点上没有消费者可以处理它,那么该命令应该只放在跳过的队列中,所以我很困惑为什么应该跳过第三个命令。我可以做些什么来进一步调查并解决问题?
这是消费者的配置
services.AddMassTransit(x =>
{
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(_settings.RabbitMqConnectionString, "/", h => { });
cfg.UseInMemoryScheduler();
//cfg.UseMessageScheduler(new Uri("rabbitmq://localhost/quartz"));
cfg.UseExtensionsLogging(provider.GetRequiredService<ILoggerFactory>());
cfg.ReceiveEndpoint(host, CurriculumQueryHelper.EndpointName, e =>
{
e.Consumer<CurriculumQueryHelper>(provider);
});
cfg.ReceiveEndpoint(host, CurriculumCommandHelper.EndpointName, e =>
{
e.Consumer<CurriculumCommandHelper>(provider, config =>
{
//config.UseConcurrencyLimit(1);
});
});
}));
});
解决方案
事实证明,另一个服务注册了一个与我发送命令的地址相同的端点,这导致命令被跳过。
推荐阅读
- jquery - Bootstrap 4:模式复选框上的“不要再显示我”
- node.js - 节点 cors 捕获中间件回调错误
- sql - 如何使用 ComboBox 数字添加到日期文本框?
- python - 如何在 TensorFlow 2.0 中实现 clip_gradients_by_norm?
- swift - 在 Function 之外访问 Firestore 数据
- python-3.x - 以编程方式确定字符串是否是python中的有效变量名
- python - BeautifulSoup changes > to >
- duplicati - Duplicati 可以保留文件日期和时间吗?
- mysql - MySql,同一张表的多个列的外键
- modbus-tk - 在使用 modbus_tk 库时需要帮助