麻省理工学院RabbitMq-为什么我的所有消息都被跳过 [英] MassTransit rabbitMq - Why are all my messages skipped

查看:0
本文介绍了麻省理工学院RabbitMq-为什么我的所有消息都被跳过的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用.Net Core 3.1应用程序,由于某种原因,我的消息没有被使用。

服务配置:

services.AddMassTransit(x =>
        {
            x.AddConsumer<ItemAddedConsumer>();
            x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                cfg.UseHealthCheck(provider);
                cfg.Host(new Uri($"rabbitmq://{rMqSettings.host}:{rMqSettings.port}"), h =>
                               {
                                   h.Username(rMqSettings.username);
                                   h.Password(rMqSettings.password);
                               });
                cfg.ReceiveEndpoint("items-service.ItemAdded", ep =>
                {
                    ep.ConfigureConsumeTopology=false;
                    ep.Bind("ItemAdded");
                    ep.PrefetchCount = 15;
                    ep.Consumer<ItemAddedConsumer>(provider);
                });

消费者类:

public class ItemAddedConsumer : IConsumer<ItemAdded>
{
    private readonly IMediator _mediator;

    public ItemAddedConsumer(IMediator mediator)
    {
        _mediator = mediator;
    }

    public async Task Consume(ConsumeContext<ItemAdded> context)
    {
        await _mediator.Send(new ItemAdded(context.Message.Id));
    }
}

这就是我发送消息的方式:

            Uri uri = new Uri("exchange:ItemAdded?bind=true&queue=items-service.ItemAdded");
            var endPoint = await _bus.GetSendEndpoint(uri);
            await endPoint.Send(@event);
所有消息都将发送到名为Items-Service.ItemAdded_Skiped的新队列 queues

推荐答案

确保发送的消息和使用者使用相同的消息类型,包括命名空间as outlined in the docs

另外,为什么发送端点地址和接收端点配置过于复杂?您可以更改消息的EntityName(通过属性或发布拓扑),并只需从消息生产者使用发布。

这篇关于麻省理工学院RabbitMq-为什么我的所有消息都被跳过的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆