【问题标题】:Unable to override exchange name while subscribing in RabbitMq using Masstransit使用 Masstransit 在 RabbitMq 中订阅时无法覆盖交换名称
【发布时间】: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();
        }
    }
}

以下是启动 consumer 之前存在的交换和队列:

创建消费者实例后,会创建一个名为队列的新交换,并重定向绑定。由于旧交换被其他发布者使用,所有到达旧交换的消息都被移动到_skipped队列。如何使用 MassTransit 覆盖消费者的交易所名称? 我提到了https://masstransit-project.com/advanced/topology/publish.html,但如果有任何示例代码来了解如何在创建消费者时覆盖交换和队列,那将会很有帮助。谢谢!

【问题讨论】:

    标签: c# masstransit


    【解决方案1】:

    RabbitMQ 使用的拓扑是explained in the documentation

    始终创建与队列名称匹配的交换。绑定到该交换,而不是直接绑定到队列。

    this video 也有介绍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 2013-05-13
      相关资源
      最近更新 更多