【发布时间】:2022-01-13 06:47:12
【问题描述】:
刚刚从 MassTransit 6.3.2 升级到 7.2.4。我正在使用 .Net Core 5。
以下单元测试在升级前运行良好,但升级后失败。
using var harness = new InMemoryTestHarness();
harness.Consumer(() => new MockedxxxService(), xxxEndPoint);
harness.Start().Wait();
IBus endpoint = harness.Bus;
var tasks = new System.Collections.Concurrent.ConcurrentBag<Task<string>>();
var result = Parallel.For(0, 100, index =>
{
var sut = new xxxRetriever(..., endpoint, ...);
tasks.Add(sut.Getxxx(paramx));
});
Assert.True(result.IsCompleted);
await Task.WhenAll(tasks);
xxxRetriever 类中的代码如下所示。
public async Task<string> Getxxx(string paramx)
{
try
{
var serviceAddress = new Uri("queue:" + ...);
var xxxService = _busService.CreateRequestClient<xxxContract>(serviceAddress, TimeSpan.FromMilliseconds(xxx));
var xxxResponse = await xxxService.GetResponse<xxxResultContract>(new
{
...
}).ConfigureAwait(false);
....
}
}
端点作为 IBus 注入到类中。
模拟的服务如下所示。
public class MockedxxxService : IConsumer<xxxContract>
{
public async Task Consume(ConsumeContext<xxxContract> context)
{
await context.RespondAsync<xxxResultContract>(new { ... } } });
}
}
当我们将任务数量限制在 30 个左右时,测试运行良好。但在此之上,它始终失败并显示消息“超时等待响应,RequestId:...”。
任何帮助将不胜感激。
【问题讨论】:
标签: timeout masstransit