2017-01-29 4 views
1

J'utilise NServiceBus dans mon projet et chaque fois que l'application reçoit un message, elle construit encore et encore l'instance de la classe. Et je veux qu'il stocke quelque part des informations initialement chargées pour l'utilisation ultérieure. Je ne peux pas instancier le stockage de la mémoire dans la classe Handler, et je ne peux pas utiliser la base de données parce que c'est trop lent. Je pense utiliser le MemoryCache mais j'ai besoin d'y accéder depuis le Hander. S'il vous plaît aviser quelle est la meilleure façon de le faire.Utiliser MemoryCache avec NServiceBus - quelle est la meilleure approche?

Voici mon code:

//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 
+0

Ainsi, pour comprendre correctement, instancier le message est une performance très lourde opération? –

+0

Le message va être traité en utilisant certains services et certaines données surchargées comme une base de données en mémoire. C'est utilisé pour préparer un autre message. La question est donc de savoir comment organiser l'instanciation du stockage. Si je crée le ObjectCache dans le constructeur du Handler, alors il sera recréé pour chaque message et je veux l'éviter. –

+0

Alors, à quel point est-ce lent et à quelle vitesse doit-il être? Si vous ne pouvez pas répondre à ces questions alors c'est probablement un cas d'optimisation prématurée –

Répondre