【发布时间】:2017-01-29 15:31:26
【问题描述】:
我在我的项目中使用 NServiceBus,并且每次应用程序收到一条消息时,它都会一次又一次地构造类的实例。 我希望它在某处存储一些最初加载的信息以供进一步使用。 我无法实例化Handler类中的内存存储,也无法使用数据库,因为它太慢了。 我想使用 MemoryCache 但我需要从 Hander 访问它。 请告知最好的方法。
这是我的代码:
//this is a console app
class Program{
...
}
//this is a Handler of NServiceBus:
public class MyCommandHandler: IHandleMessages<MessageCommand>
{
public Task Handle(MessageCommand message, IMessageHandlerContext context)
{
...
return context.Publish(obj);
}
}//class
【问题讨论】:
-
那么,正确理解,实例化消息是一项性能非常繁重的操作?
-
该消息将使用一些服务和一些额外加载的数据进行处理,例如某种内存数据库。它用于准备另一条消息。所以问题是如何组织存储的实例化。如果我在 Handler 的构造函数中创建 ObjectCache,那么它将为每条消息重新创建,我想避免它。
-
那么它有多慢,它必须有多快?如果您无法回答这些问题,那么这可能是过早优化的情况
标签: c# caching nservicebus messaging memorycache