2010-04-01 6 views
12

J'essaye de configurer mon mappage de noeud final de message dans ma configuration NServiceBus en envoyant des messages de différents espaces de noms à différents points de terminaison.Comment configurer MessageEndpointMapping par espace de noms dans NServiceBus

En tant que tel, j'ai configuré ce qui suit dans mon web.config:

<MessageEndpointMappings> 
    <add Messages="Company.Messages.Accounts" Endpoint="ServiceInput" /> 
    <add Messages="Company.Messages.Payments" Endpoint="ServiceInput" /> 
    <add Messages="Company.Messages.Cancellations" Endpoint="ServiceInput" /> 
    <add Messages="Company.Messages.Notifications" Endpoint="ServiceInput" /> 
</MessageEndpointMappings> 

Cependant, au démarrage de l'application, je reçois l'exception suivante:

Spring.Objects.PropertyAccessExceptionsException: PropertyAccessExceptionsException (1 erreurs); Les exceptions PropertyAccess imbriquées sont: [Spring.Core.TypeMismatchException: Impossible de convertir la valeur de propriété de type [System.Collections.Hashtable] en type requis [System.Collections.IDictionary] pour la propriété 'MessageOwners'., Exception interne: System.ArgumentException: Problème loading message assembly: Company.Messages.Payments ---> System.IO.FileNotFoundException: Impossible de charger le fichier ou l'assembly 'Company.Messages.Payments' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié. Nom de fichier: 'Company.Messages.Payments'

Ce que je trouve intéressant, c'est qu'il semble avoir trouvé Company.Messages.Accounts, mais a échoué sur la deuxième ligne configurée. Je pensais que peut-être que cela n'aimait pas qu'ils aient tous le même point de terminaison, mais changer cette configuration pour les faire passer à des points de terminaison différents n'a pas changé le message d'erreur que j'ai reçu.

Qu'est-ce que je fais mal? Est-il impossible de segmenter les messages par espace de noms (tout ce que j'ai vu est par type et par assemblage)?

Merci, Steve

Répondre

14

NSB ne supporte que la cartographie des ensembles ou types individuels aux points d'extrémité. Les espaces de noms ne sont pas supportés, je vous suggère de diviser votre assemblage de messages en assemblages séparés pour chacun de vos points de terminaison.

+0

Merci Andreas. Quelqu'un dans la liste de courriel NServiceBus a suggéré que c'était possible, mais je n'arrivais pas à le faire fonctionner. Merci pour la réponse définitive. ~ Steve – SteveBering

+0

Est-ce encore courant? Je ne pense pas que ce soit ... –

+3

3.3.0 ajouté le support pour les espaces de noms ainsi –

5

Selon cette page, vous pouvez spécifier un type: http://docs.particular.net/nservicebus/messaging/message-owner

types spécifiques peuvent être configurés en utilisant leur nom qualifié: "namespace.type, assemblage".

+0

Idéal pour inclure un lien. Je n'ai jamais lu le sous-exemple du pub parce que je n'en avais pas encore besoin, mais je n'ai pas vu ce petit truc ailleurs dans les docs. – etropic

0

Au NServiceBus v3.3 peut être utilisé namespaces pour filtrer les correspondances de message

http://docs.particular.net/nservicebus/messaging/message-owner

+0

Peut-être que le doco devrait également souligner que NServiceBus (4.7 est la version que j'utilise!) Échoue également si j'ajoute l'extension Image (* .dll dans mon cas). Assez contre-intuitif! – agAus

+0

Nous avons la note ici: http://docs.particular.net/nservicebus/messaging/message-owner#2-resolving-the-messages-types-to-map-resolving-with-the-assembly Toutes les idées sur ont nous pouvons le rendre plus clair? –