2010-04-01 13 views
12

Estoy intentando configurar mi asignación de punto final de mensaje en mi configuración de NServiceBus enviando mensajes desde diferentes espacios de nombres a diferentes puntos finales.Cómo configurar MessageEndpointMapping por espacio de nombres en NServiceBus

Como tal, he configurado lo siguiente en mi 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> 

Sin embargo, cuando se inicia la aplicación, que reciben la siguiente excepción:

Spring.Objects.PropertyAccessExceptionsException: PropertyAccessExceptionsException (1 error); las excepciones de acceso a la propiedad anidadas son: [Spring.Core.TypeMismatchException: no se puede convertir el valor de propiedad del tipo [System.Collections.Hashtable] al tipo requerido [System.Collections.IDictionary] para la propiedad 'MessageOwners'., Excepción interna: System.ArgumentException: problema carga del ensamblaje del mensaje: Company.Messages.Payments ---> System.IO.FileNotFoundException: No se pudo cargar el archivo o ensamblado 'Company.Messages.Payments' o una de sus dependencias. El sistema no puede encontrar el archivo especificado. Nombre de archivo: 'Company.Messages.Payments'

Lo que me parece interesante es que parece haber encontrado Company.Messages.Accounts pero falló en la segunda línea configurada. Pensé que tal vez no le gustaba que todos fueran al mismo punto final, pero cambiar esta configuración para que pasen por diferentes puntos finales no cambió el mensaje de error que recibí.

¿Qué estoy haciendo mal? ¿No es posible segmentar mensajes por espacio de nombres (todo lo que he visto es por tipo y por ensamblaje)?

Gracias, Steve

Respuesta

14

NSB solamente admite la asignación de conjuntos o tipos individuales a puntos finales. Los espacios de nombres no son compatibles, sugiero que divida el conjunto de mensajes en ensamblajes separados para cada uno de sus puntos finales.

+0

Gracias Andreas. Alguien en la lista de correo de NServiceBus sugirió que era posible, pero parecía que no podía hacerlo funcionar. Gracias por la respuesta definitiva. ~ Steve – SteveBering

+0

¿Esto todavía es actual? No creo que sea ... –

+3

3.3.0 añadido soporte para espacios de nombres, así –

5

De acuerdo con esta página puede especificar un tipo: http://docs.particular.net/nservicebus/messaging/message-owner

tipos específicos se pueden configurar mediante el uso de su nombre completo: "namespace.type, el montaje".

+0

Excelente para incluir el enlace. Nunca leí el ejemplo de pub porque todavía no lo necesitaba, sin embargo, no he visto ese pequeño tid-bit en ningún otro lado en los documentos. – etropic

0

Como de espacios de nombres v3.3 NServiceBus pueden utilizarse para filtrar mensajes de asignaciones

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

+0

Quizás el doco también debería señalar que NServiceBus (4.7 es la versión que estoy usando!) También falla si agrego la extensión de imagen (* .dll en mi caso). Muy contra-intuitivo! – agAus

+0

Tenemos la nota aquí: http://docs.particular.net/nservicebus/messaging/message-owner#2-resolving-the-messages-types-to-map-resolving-with-the-assembly Cualquier idea sobre podemos hacerlo más claro? –

Cuestiones relacionadas