RawRabbit-定义交易所名称

时间:2020-07-17 12:49:12

标签: asp.net-core rawrabbit

我已经开始使用微服务,并希望启用它们之间的消息发送。 我决定为此使用RawRabbit。

我已经配置了Rabbit,所以两个服务都可以正确连接到我的服务器。一个是发布消息,第二个应该收到此消息。

消息已正确发布,但是我的第二个服务无法接收消息,因为它们具有2个差异交换名称,默认情况下它们是名称空间。 我的意思是服务A在以下位置发布消息:ServiceA.Command交换。 第二种是尝试从ServiceB.CommandHandler.ConcreteHandler交换接收消息。

我的问题是如何在appsettings.json中为两个服务定义交换通用名称?

订阅:

        public static IApplicationBuilder Subscribe<T>(this IApplicationBuilder app, IBusClient client)
        where T : ICommand
    {
        if (!(app.ApplicationServices.GetService(typeof(ICommandHandler<T>)) is ICommandHandler<T> handler))
            throw new NullReferenceException();

        client
            .SubscribeAsync<T>(async (msg, context) =>
            {
                await handler.HandleAsync(msg, CancellationToken.None);
            });
        return app;
    }
    public static IApplicationBuilder Subscribe<T>(this IApplicationBuilder app)
        where T : ICommand
    {
        if (!(app.ApplicationServices.GetService(typeof(IBusClient)) is IBusClient busClient))
            throw new NullReferenceException();

        return Subscribe<T>(app, busClient);
    }

应用设置:

  "rabbitmq": {
"Username": "rabbitmq",
"Password": "rabbitmq",
"VirtualHost": "/",
"Port": 5671,
"Hostnames": [ "localhost" ],
"RequestTimeout": "00:00:10",
"PublishConfirmTimeout": "00:00:01",
"RecoveryInterval": "00:00:10",
"PersistentDeliveryMode": true,
"AutoCloseConnection": true,
"AutomaticRecovery": true,
"TopologyRecovery": true,
"Exchange": {
  "Durable": true,
  "AutoDelete": true,
  "Type": "Topic",
  "Name": "test"
},
"Queue": {
  "AutoDelete": true,
  "Durable": true,
  "Exclusive": true
}

},

参数名不起作用。 两种服务具有相同的配置。

0 个答案:

没有答案