我有一個消費者,他需要使用來自現有 RabbitMQ 佇列的訊息。當佇列配置正常,沒有任何設定時,它作業正常。
services.AddMassTransit(config =>
{
config.AddConsumer<OrderConsumer>();
config.UsingRabbitMq((ctx, cfg) =>
{
cfg.Host("amqp://user:12345@localhost:54425");
cfg.ReceiveEndpoint("transient-order-queue", c =>
{
c.ConfigureConsumer<OrderConsumer>(ctx);
});
});
});
services.AddMassTransitHostedService();
為了完成一些作業,我需要為佇列配置一些功能。
Features
x-max-length: 1000
x-overflow: reject-publish
arguments:
x-queue-type: classic
durable: true
我如何配置我的消費者以連接到該佇列?它給了我這樣的錯誤:
PRECONDITION_FAILED - vhost '/' 中佇列 'transient-order-queue' 的不等價 arg 'x-max-length':未收到但當前是 'long' 型別的值 '1000'
但我不明白,如何將這些引數添加到 MassTransit 配置中。請幫幫我!
uj5u.com熱心網友回復:
只需將它們添加為佇列屬性:
cfg.ReceiveEndpoint("transient-order-queue", c =>
{
c.QueueAttributes["x-max-length"] = 1000;
c.QueueAttributes["x-overflow"] = "reject-publish";
c.ConfigureConsumer<OrderConsumer>(ctx);
});
uj5u.com熱心網友回復:
找到了答案。您可以使用以下語法向佇列添加屬性:
cfg.ReceiveEndpoint("transient-order-queue", c =>
{
c.ConfigureConsumer<OrderConsumer>(ctx);
c.SetQueueArgument("x-overflow", "reject-publish");
c.SetQueueArgument("x-max-length", 1000);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388589.html
下一篇:如何遞回洗掉具有特定擴展名的檔案
