【问题标题】:Exchange binding not working in MassTransit with RabbitMQ and SignalR交换绑定在使用 RabbitMQ 和 SignalR 的 MassTransit 中不起作用
【发布时间】:2021-03-10 19:34:47
【问题描述】:

我已经用 masstransit rabbitMQ 和 signalR 实现了一个 .net 核心 web api,我试图让 signalR 背板工作。 我怀疑问题出在公共交通为我解决的交换绑定上,但我无法弄清楚我做错了什么导致这种行为。

我的目标是能够拥有另一个应用程序将调用的端点(现在我为此使用邮递员),它将向所有客户端(js 端)发布消息,但只要消息发布并到达由于没有绑定,因此交换没有任何反应。

在 rabbitMQ 管理工具中,它创建一个交换而不绑定到另一个交换/队列

我的创业:

        public void ConfigureServices(IServiceCollection services)
    {
        Utilities utilities = new Utilities(Configuration);

        RabbitMQIdentity rabbitMQIdentity = utilities.GetRabbitMQIdentity();
        var username = rabbitMQIdentity.UserName;
        var password = rabbitMQIdentity.Password;
        var hostName = rabbitMQIdentity.HostName;
        var portNumber = rabbitMQIdentity.Port;

        services.AddHttpClient();
        services.AddControllers();
        services.AddSignalR();

        services.AddMassTransit(config =>
        {
            config.AddSignalRHub<NotificationHub>();
            config.UsingRabbitMq((ctx, cfg) =>
            {
                cfg.Host($"amqp://{username}:{password}@{hostName}:{portNumber}");
                cfg.ConfigureEndpoints(ctx);
            });
        });
        services.AddMassTransitHostedService();

        services.AddSingleton<IHostEnvironment>(hostEnvironment);
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddSingleton<LogConfigurationUtility, WebLogConfigurationUtility>();
        services.AddCors(options =>
        {
            options.AddDefaultPolicy(builder =>
            {
                builder.SetIsOriginAllowed((x) => Configuration["CorsWhiteList"].Split(';').Any(x.Contains))
                       .WithMethods("GET", "POST")
                       .AllowAnyHeader()
                       .AllowCredentials();
            });
        });
    }

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseCors();

        app.UseMiddleware<RequestMiddleware>();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapHub<NotificationHub>("/notificationhub");
        });
    }

我的发布方法:

IReadOnlyList<IHubProtocol> protocols = new IHubProtocol[] { new JsonHubProtocol() };


        publishEndpoint.Publish<All<NotificationHub>>(new
        {
            Messages = protocols.ToProtocolDictionary("Notify", new object[] { "backend-process", "oiiiii" })
        });

还有我的客户端:

useEffect(() => {
    $(function() {
        const connection = new HubConnectionBuilder()
            .withUrl(hubUrl)
            .configureLogging(LogLevel.Trace)
            .build();
        // Create a function that the hub can call to broadcast messages.
        connection.on("Notify", (status) => {
            console.log("entrouuuuuu");
            setNotification(status);
        });
        // Start the connection.
        async function start() {
            try {
                await connection.start();
                connection.invoke("InitializeClient", orderId);
                console.log("SignalR Connected.");
            } catch (err) {
                setTimeout(start, 5000);
            }
        }

        start();
    });
}, []);

我遵循了 MassTransit 官方文档并试图找出示例示例与我的不同之处,但我似乎无法弄清楚(除了正确创建和绑定交换)。

https://masstransit-project.com/advanced/signalr/quickstart.html https://masstransit-project.com/advanced/signalr/sample.html

谁能帮帮我?

【问题讨论】:

    标签: .net-core rabbitmq signalr masstransit


    【解决方案1】:

    7.1.6 中存在 has been fixed 的错误,将在 7.1.7 中发布。

    【讨论】:

    • 非常感谢!我将我的版本降级到 6.3.2,而 7.1.7 还没有发布,它就像一个魅力 =) 另一个问题,如果我可以的话,我怎么能告诉 MassTransit 我想在我执行时向哪个组发送消息发布?
    • 没有线索,你可能真的会发布另一个问题或搜索答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多