gpt4 book ai didi

c# - 一段时间后在 RabbitMQ 中获取 OutOfMemory

转载 作者:太空狗 更新时间:2023-10-30 01:29:43 30 4
gpt4 key购买 nike

我将 RabbitMQ 与 C#、MassTransit、Autofac 结合使用。

我有一个预定的(5 秒)作业来使用队列。

这项工作大约工作了 2 个小时,然后突然停止了。当我搜索日志时,我发现了这个:

Scope ---> An exception occurred during bus creation (See inner exception for det ails.) ---> MassTransit.ConfigurationException: An exception occurred during bus creation ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

这些是我在 MassTransit 中配置 Autofac 的代码块:

builder.Register(context =>
{
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host(new Uri(Globals.QueueUrl), h =>
{
h.Username(Globals.QueueUserName);
h.Password(Globals.QueuePassword);
});

cfg.ReceiveEndpoint("create_sales_queue",
ec =>
{
ec.Consumer<CreateSalesConsumer>(context);
ec.UseRetry(p => p.Incremental(10, TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(200)));
});

});
return busControl;
})
.InstancePerDependency()
.As<IBusControl>()
.Named<IBusControl>(GenericIntegrationTask.CreateSalesTask.ToString());

这些是预定作业的代码:

try
{

var bus = container.ResolveNamed<IBusControl>(GenericIntegrationTask.CreateSalesTask.ToString());
bus.Start();
Thread.Sleep(2000);
bus.Stop();
}
catch (Exception e)
{
Console.WriteLine(e);
}

提前致谢。

最佳答案

您应该永远为每个依赖项或每个请求注册您的IBus。它必须是单个实例。

您还需要在应用启动时启动总线,并在应用停止时停止总线。

关于c# - 一段时间后在 RabbitMQ 中获取 OutOfMemory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50155019/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com