首页
学习
活动
专区
圈层
工具
发布

Masstransit
EN

Stack Overflow用户
提问于 2020-05-21 22:11:31
回答 1查看 149关注 0票数 0

我不能完成这项工作。

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

我100%确定只缺一个细节。

消费者收到了我的消息,但我在客户端得到了超时。

我尝试了类似于这里给出的代码:https://masstransit-project.com/usage/requests.html

客户端:

代码语言:javascript
复制
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);
    }
}

服务器

代码语言:javascript
复制
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;
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-21 23:47:55

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61936472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档