【发布时间】:2021-05-12 06:50:25
【问题描述】:
我想创建一个订阅者,它使用 MassTransit 和 RabbitMq 侦听现有交换和绑定到该交换的队列。 环境细节: 点网版本:4.8 MassTransit 版本:7.1.3
请在下面找到我的订阅者代码:
using System;
using System.Threading.Tasks;
using Contracts;
using MassTransit;
namespace Subscriber
{
internal class Receive
{
public static async Task Main(string[] args)
{
var config = new RabbitMqConfig
{
ConnectionString = "rabbitmq://localhost",
TopicExchange = "manualexchange",
QueueSubscription = "manualqueue",
TimeOutInMinutes = 1,
UserName = "guest",
Password = "guest"
};
var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host(new Uri(config.ConnectionString), h =>
{
h.Username(config.UserName);
h.Password(config.Password);
});
//TODO : override masstransit topic name and use given configuration
cfg.ReceiveEndpoint(config.QueueSubscription, e =>
{
e.ConfigureConsumeTopology = false;
e.Consumer(() => new ValueConsumer());
e.Bind(config.TopicExchange);
});
});
await bus.StartAsync();
Console.WriteLine("Waiting for messages...");
Console.ReadLine();
await bus.StopAsync();
}
}
}
创建消费者实例后,会创建一个名为队列的新交换,并重定向绑定。由于旧交换被其他发布者使用,所有到达旧交换的消息都被移动到_skipped队列。如何使用 MassTransit 覆盖消费者的交易所名称? 我提到了https://masstransit-project.com/advanced/topology/publish.html,但如果有任何示例代码来了解如何在创建消费者时覆盖交换和队列,那将会很有帮助。谢谢!
【问题讨论】:
标签: c# masstransit