c# - 使用使用 localhost 初始化的请求/响应时如何修复 MassTransit.EndpointNotFoundException?
问题描述
我们正在使用带有请求/响应模式的 masstransit,如下所述:http: //masstransit-project.com/MassTransit/usage/request-response.html
由于某种原因,当使用 localhost 初始化总线时,我使用 context.RespondAsync 方法在响应端收到 MassTransit.EndpointNotFoundException 。
当使用实际 IP 初始化总线时,它运行良好,没有任何异常。
我们也将总线与使用 localhost 初始化的其他公共交通模式一起使用,没有任何问题。
我们尝试在请求端同时使用 Request 和 GetResponse 模式,认为问题来源可能存在,但没有成功。
以下是响应端的消费者代码,它在 RespondAsync 上生成异常:
public override async Task Consume(ConsumeContext<IImageRequest> context)
{
var msg = context.Message;
try
{
var image = GetImage(msg.Id);
await context.RespondAsync<IImageResult>(new
{
msg.Id,
AImage = image
});
}
catch (Exception e)
{
Logger.Instance.Error($"{e}");
}
}
以下是请求方:
Task.Run(async () =>
{
var reqResClient =
BusControl.GetBusControl.CreateRequestClient<IImageRequest, IImageResult>("requestimage");
var req = new ImageRequest(msg.Id);
var response = await reqResClient.Request(req);
}).Wait();
总线初始化代码:
_bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Durable = true;
_host = cfg.Host(HostName, port, VirtualHost, h =>
{
h.Username(UserName);
h.Password(Password);
});
cfg.ReceiveEndpoint(host, subscriber.QueueName, ep =>
{
ep.Durable = !subscriber.AutoDelete;
ep.AutoDelete = subscriber.AutoDelete;
ep.Instance(subscriber.Consumer);
if (subscriber.PrefetchCount.HasValue)
ep.PrefetchCount = subscriber.PrefetchCount.Value;
if (subscriber.ConcurrencyLimit.HasValue)
ep.UseConcurrencyLimit(subscriber.ConcurrencyLimit.Value);
});
cfg.Message<T>(x =>
{
x.SetEntityName(entityName);
});
});
public void Start()
{
if (_state == BusState.NotInitialized)
throw new InvalidOperationException("Cannot start bus. Bus is not initialized");
_bus?.Start();
_state = BusState.Started;
}
我想知道是否有解决方案?或者这是一个已知问题?
谢谢,
解决方案
推荐阅读
- android - React Native - 二维条码扫描仪输入触发 android 快捷方式
- javascript - 如何按日期对数据表进行排序(作为标准),同时保持排序选项可用于其他列?
- visual-studio - 有没有办法在没有解决方案的情况下使用 Visual Studio 的 Klocwork 插件?
- android - Android 相机预览在 SurfaceView 上失真
- python - 如何在 Python 中替换几个正则表达式?
- python - Google Datastore 自动实体 ID 生成
- postgresql - 如何在 PostgreSQL 9.4 上将 int4range 类型的列转换为整数?
- php - 自定义 WooCommerce 我的帐户和结帐上的地址字段
- vhdl - 跨块语句的 VHDL 配置
- git - 在 git merge workingbranch 之后,如何去除错误“error: cannot run sublime: No such file or directory”