我不能完成这项工作。
我尝试实现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;
}
}发布于 2020-05-21 23:47:55
您还需要在客户机上启动总线,就像在服务器上使用接收端点启动总线一样。
https://stackoverflow.com/questions/61936472
复制相似问题