Spécifiez NServiceBus BinarySerializer pour certains types de messages, mais pas pour tous

StackOverflow https://stackoverflow.com/questions/2840471

  •  27-09-2019
  •  | 
  •  

Question

Est-ce NServiceBus 2.0 permet de définir sérialiseur pour le type de message donné?

Je veux pour tous, mais un de mes messaages à sérialiser en utilisant XmlSerializer. Celui qui reste doit être sérialisée en utilisant BinarySerializer.

Est-il possible avec NServiceBus 2.0?

Était-ce utile?

La solution

Je crois que le sérialiseur est spécifié sur une base de point final, de sorte que tous les messages en utilisant ce point d'extrémité utiliseraient la même sérialiseur.

Cependant, si vous suivez la recommandation d'un NServiceBus rote type de message par terminal / file d'attente, vous pouvez isoler efficacement le type d'un message et utiliser un autre sérialiseur pour elle.

Je suis curieux, mais, ce qui est spécial sur le type d'un message qui nécessite sérialisation binaire?

Modifier en réponse à un commentaire

Le Info Distributeur mentionne indirectement ce sous Routage avec le distributeur. Udi Dahan conseille également fréquemment ce dans le NServiceBus Yahoo Group bien qu'il est difficile de fournir des liens parce que la recherche est médiocre.

En fait, l'idée est que vous ne voulez pas que les messages de haute priorité à se coincer derrière les moins prioritaires, et que cela vous donne la plus grande flexibilité à l'échelle sur certains traitement des messages si nécessaire.

Parce que le MsmqTransportConfig permet seulement pour une InputQueue à préciser, ayant un type de message par file d'attente aussi signifie que vous n'avez qu'un seul gestionnaire de messages par terminal.

Pour répondre à l'image, vous pouvez toujours être en mesure de l'encapsuler dans un message au format XML si vous encodez le tableau d'octets en tant que chaîne codée en base64. Ce n'est pas idéal, mais si vos images ne sont pas trop grand, il peut être plus facile de le faire que d'aller à la peine d'utiliser un autre sérialiseur sur un seul type de message.

Une autre option consiste à stocker les données d'image hors de la bande dans une base de données ou de système de fichiers, puis s'y référer par un identifiant ou un chemin (respectivement).

Autres conseils

Pas possible dans la version 2. Mais il peut être fait en utilisant le pipeline dans les versions 5 et au-dessus

scroll top