Masstransit GetResponse

问题描述 投票:0回答:1

我无法完成这项工作。

我尝试实现Masstransit的响应模式。

我100%肯定只缺少一个细节。

消费者收到我的消息,但是我在客户端收到超时请求。

我尝试过类似于此处给出的代码:https://masstransit-project.com/usage/requests.html

客户:

public static async Task Main(string[] args)
    {

        var TheBus = Bus.Factory.CreateUsingRabbitMq(sbc =>
        {
            sbc.Host(("rabbitmq://192.168.180.44"), host =>
            {
                host.Username("bsone");
                host.Password("bsone");
            });
        });
        var factory = TheBus.CreateClientFactory();


        var serviceAddress = new Uri("rabbitmq://192.168.180.44/hugo");
        var client = factory.CreateRequestClient<Registrieren>(TimeSpan.FromSeconds(10));

        var response =  client.GetResponse<IRegisterDone>( new Registrieren()
        {
            FaMaterial = null,
            Gewicht = 1, 
            Erledigt = true,
            UserId = "WW", 
            Charge = "11", 
            stock = null
        }).Result;
         Console.WriteLine(response.Message.Status);
    }
}

服务器

public class Program
{
    private static IBusControl bus;

    public static void Main(string[] args)
    {


        var TheBus = Bus.Factory.CreateUsingRabbitMq(sbc =>
        {
            sbc.Host(("rabbitmq://192.168.180.44"), host =>
            {
                host.Username("bsone");
                host.Password("bsone");
            });

            sbc.ReceiveEndpoint("hugo", end =>
            {
                end.Consumer<RegistrierenFaMaterialBuchungConsumer>();
            });

        });

        TheBus.Start();



        Console.WriteLine("Masstransit Up and Running");
        Console.ReadLine();
    }


}


public class RegistrierenFaMaterialBuchungConsumer : IConsumer<wsb.erp.net.waage.messages.bsone.IRegistrieren>
{
    private IRegistrieren _registrieren;
    public Task Consume(ConsumeContext<IRegistrieren> context)
    {
        _registrieren = context.Message;
        Console.WriteLine($"{DateTime.Now} - Message Registrieren Received");
        context.Respond<IRegisterDone>(new RegisterDone() {  Status = "DONE"  });

        return Task.CompletedTask;
    }

}
request response masstransit
1个回答
0
投票

您还需要在客户端上启动总线,就像在服务器上使用接收端点启动总线一样。

© www.soinside.com 2019 - 2024. All rights reserved.