MassTransit:发布后我应该停下公共汽车还是离开它?

MassTransit: should I stop the bus after publishing or leave it?

我遇到了一个问题。我正在使用 MassTransit 的发布拓扑,并且在配置它之后我没有启动总线,因为我从某个地方看到(忘记了,抱歉)说总线可以在不启动它的情况下发布消息。

发布消息效果很好。所以我想问一下,在我没有启动的情况下,发布后是否应该停车?

如果是,停止它而不是离开它有什么好处?

这是我的发布者 class:

public class MessagePublisher<TMessage> : IPublisher<TMessage> where TMessage : class
    {
        private readonly  IBusControl _busConsControl;

        public MessagePublisher(BusConfigurationDto config)
        {
            _busConsControl = config.CreateBus();
        }

        public async Task PublishMessageAsync(TMessage message)
        {
            await _busConsControl.Publish(message);
        }
}

和 BusConfigurationDto Class:

public class BusConfigurationDto
    {
        public string Host { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public string ExchangeName { get; set; }
        public string QueueName { get; set; }

        public IBusControl CreateBus()
        {
            IBusControl bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                IRabbitMqHost host = cfg.Host(new Uri(Host), hostConfigurator =>
                {
                    hostConfigurator.Username(UserName);
                    hostConfigurator.Password(Password);
                });

                cfg.ReceiveEndpoint(host, QueueName, ep =>
                {
                    ep.Bind(ExchangeName, s => { s.Durable = true; });
                });
            });

            return bus;
        }
    }

请高人指点,万分感谢!

您应该在应用程序启动时启动总线,并在应用程序退出时停止它。否则,您将不知道配置是否正确,以及 RabbitMQ 是否可用,直到很久以后您的发布者尝试发布消息时。每次发布消息时 start/stop 总线也很昂贵,这就是为什么保持它并建议 运行 的原因。