【问题标题】:Using MemoryCache with NServiceBus - what's the best approach?将 MemoryCache 与 NServiceBus 一起使用 - 最好的方法是什么?
【发布时间】: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


【解决方案1】:

如果 ObjectCache 是 registered as a single instance,那么它可以被 including it as a constructor parameter 注入到所有处理程序中

【讨论】:

  • 我也想过这个,但也许还有另一种方式,更优化?
  • 我知道的最好的方法:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多