未从RabbitMQ总线服务获取消息

未从RabbitMQ总线服务获取消息,rabbitmq,asp.net-core-2.0,masstransit,Rabbitmq,Asp.net Core 2.0,Masstransit,我正在使用RabbitMQ总线和微服务。因为我有两个微服务。我是从1个服务发布的,并尝试在第2个服务中获取已发布的消息,但我没有得到。这是我的密码。 Startup.cs——Publisher,因为我使用的是.net内核,而不是放整个文件,只是放总线配置 var builder = new ContainerBuilder(); builder.Register(c => { return Bus.Factor

我正在使用RabbitMQ总线和微服务。因为我有两个微服务。我是从1个服务发布的,并尝试在第2个服务中获取已发布的消息,但我没有得到。这是我的密码。 Startup.cs——Publisher,因为我使用的是.net内核,而不是放整个文件,只是放总线配置

var builder = new ContainerBuilder();
            builder.Register(c =>
            {
                return Bus.Factory.CreateUsingRabbitMq(rmq =>
                {
                    var host = rmq.Host(new Uri("rabbitmq://localhost"), "/", h =>
                    {
                        h.Username("guest");
                        h.Password("guest");
                    });
                    rmq.ExchangeType = ExchangeType.Fanout;
                });

            }).
             As<IBusControl>()
            .As<IBus>()
            .As<IPublishEndpoint>()
            .SingleInstance();

            builder.Populate(services);
            ApplicationContainer = builder.Build();
            var busControl = ApplicationContainer.Resolve<IBusControl>();
            busControl.Start();
            return new AutofacServiceProvider(ApplicationContainer);
var builder=newcontainerbuilder();
builder.Register(c=>
{
返回Bus.Factory.CreateUsingRabbitMq(rmq=>
{
var host=rmq.host(新Uri(“rabbitmq://localhost“”“/”,h=>
{
h、 用户名(“客人”);
h、 密码(“客人”);
});
rmq.ExchangeType=ExchangeType.Fanout;
});
}).
As()
.As()
.As()
.SingleInstance();
建造商。填充(服务);
ApplicationContainer=builder.Build();
var busControl=ApplicationContainer.Resolve();
busControl.Start();
返回新的AutofacServiceProvider(ApplicationContainer);
控制器发布

_bus.Publish<OrderCompletedEvent>(new { BuyerId = Order.CustomerId.ToString() }).Wait();
\u bus.Publish(new{BuyerId=Order.CustomerId.ToString()).Wait();
消费者创业

var builder = new ContainerBuilder();

            // register a specific consumer
            builder.RegisterType<OrderCompletedEventConsumer>();
            builder.Register(context =>
            {
                var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
                {


                    var host = cfg.Host(new Uri("rabbitmq://localhost/"), "/", h =>
                    {
                        h.Username("guest");
                        h.Password("guest");
                    });

                    cfg.ReceiveEndpoint(host, "rabbitmqpocCart" + Guid.NewGuid().ToString(), e =>
                    {
                        e.LoadFrom(context);
                        e.Consumer(() => new OrderCompletedEventConsumer());
                    });
                });

                return busControl;
            })
                .SingleInstance()
                .As<IBusControl>()
                .As<IBus>();
            builder.Populate(services);
            ApplicationContainer = builder.Build();
            var busControl1 = ApplicationContainer.Resolve<IBusControl>();
            busControl1.Start();
            return new AutofacServiceProvider(ApplicationContainer);
var builder=newcontainerbuilder();
//注册特定消费者
RegisterType();
builder.Register(上下文=>
{
var busControl=Bus.Factory.CreateUsingRabbitMq(cfg=>
{
var host=cfg.host(新Uri(“rabbitmq://localhost/“”“/”,h=>
{
h、 用户名(“客人”);
h、 密码(“客人”);
});
ReceiveEndpoint(主机,“rabbitmqpocCart”+Guid.NewGuid().ToString(),e=>
{
e、 加载源(上下文);
e、 消费者(()=>newordercompletedeventconsumer());
});
});
返回总线控制;
})
.SingleInstance()
.As()
.As();
建造商。填充(服务);
ApplicationContainer=builder.Build();
var busControl1=ApplicationContainer.Resolve();
busControl1.Start();
返回新的AutofacServiceProvider(ApplicationContainer);
消费者服务

    public class OrderCompletedEventConsumer : IConsumer<OrderCompletedEvent>
        {
            public OrderCompletedEventConsumer()
            {
            }

public Task Consume(ConsumeContext<OrderCompletedEvent> context)
        {
            Debug.WriteLine(context.Message.BuyerId);
            await Test();

        }
            public async Task<bool> Test()
            {
                return true;
            }
        }
公共类OrderCompletedEventConsumer:IConsumer
{
public OrderCompletedEventConsumer()
{
}
公共任务消费(消费上下文)
{
Debug.WriteLine(context.Message.BuyerId);
等待测试();
}
公共异步任务测试()
{
返回true;
}
}
我已经在Consume方法中加入了debug,但它没有被命中。我错过了什么吗。请帮帮我。 我还注意到,这两种服务在应用程序启动时都在总线上运行。对吗

请给我一些好的例子链接或文档链接


谢谢

每次启动应用程序时,您都在创建一个新的端点和绑定,因为您将新的guid用作接收端点名称的一部分。您的RabbitMQ磁盘空间很快就会用完。我认为我们有足够的文档,您还可以两次向MT介绍您的消费者-一次是在使用
LoadFrom
时,第二次是在说
e.consumer
时。您需要选择一个或另一个。@AlexeyZimarev感谢您的回复,因为我已经按照您所说的更新了我的代码,但它仍然不起作用。可能存在一个简单的配置错误,但如果没有简洁的代码库,很难判断。你能用失败的代码创建一个GitHub回购协议来帮助解决这个问题吗?