c# - Mass Transit RabbitMQ 请求/响应 - 响应移动到 _skipped 队列
问题描述
我正在使用 Mass Transit RabbitMQ 创建请求/响应系统。服务器接收消息,我也收到了对客户端的响应,但响应也保留在 _skipped 队列中。我在这里红色的问题/回复都没有帮助,所以这是我的代码。
服务器,创建总线:
//register mass transit bus
builder.Register(context =>
{
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
IRabbitMqHost rabbitMqHost = cfg.Host(new Uri(ConfigurationManager.AppSettings["RabbitMQHost"]), settings =>
{
settings.Username(ConfigurationManager.AppSettings["RabbitMQUser"]);
settings.Password(ConfigurationManager.AppSettings["RabbitMQPassword"]);
});
cfg.ReceiveEndpoint(rabbitMqHost, "request_queue", ec =>
{
ec.LoadFrom(context);
});
});
return busControl;
})
.SingleInstance()
.As<IBusControl>()
.As<IBus>();
//register consumers
builder.RegisterType<RequstHandleByBus>();
客户端,创建总线:
//register mass transit bus
builder.Register(context =>
{
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
IRabbitMqHost rabbitMqHost = cfg.Host(new Uri(ConfigurationManager.AppSettings["RabbitMQHost"]), settings =>
{
settings.Username(ConfigurationManager.AppSettings["RabbitMQUser"]);
settings.Password(ConfigurationManager.AppSettings["RabbitMQPassword"]);
});
});
return busControl;
})
.As<IBusControl>()
.As<IBus>()
.SingleInstance();
请求发送:
var address = new Uri($"{ConfigurationManager.AppSettings["RabbitMQHost"]}/request_queue");
var requestTimeout = TimeSpan.FromSeconds(60);
IRequestClient<RequestType, ResponseType> client =
_bus.CreateRequestClient<RequestType, ResponseType>(address, requestTimeout);
ResponseType result = client.Request(request).Result;
回复:
public class RequestHandleByBus : IConsumer<RequestType>
{
private readonly RequestHandler _handler;
public RequestHandleByBus(RequestHandler handler)
{
_handler = handler;
}
public async Task Consume(ConsumeContext<RequestType> context)
{
ResponseType result = _handler.Handle(context.Message);
await context.RespondAsync(result);
}
}
解决方案
推荐阅读
- javascript - 如何将 WebGL 集成到使用画布和 2D context.drawImage 的现有游戏中?
- javascript - 如何在nodejs中将文件下载为pdf
- php - mysqli_fetch_assoc($result) 不显示所有结果
- reactjs - 如何使用 React NavLink 在新页面上呈现表单?
- powershell - 在 PowerShell 中通过 PIP 一次性升级过时的 Python 包
- r - 拟合数据集后将 binnin 模型存储在 R 中
- python - 如何在 django 自定义 APIView 中设置分页?
- mysql - 不能用 docker laravel 做 mysql
- excel - 使用 msxmlhttp60 设置“表变量”中的 Excel vba 问题
- python - 当我单击提交按钮时,我的数据库中没有任何显示