NServiceBus为某些消息类型指定BinarySerializer,但不为所有消息类型指定

时间:2010-05-15 14:34:20

标签: nservicebus esb serializer

NServiceBus 2.0是否允许为给定的消息类型定义序列化程序?

除了我的一个消息之外,我想要使用XmlSerializer序列化所有消息。应使用BinarySerializer序列化剩余的一个。

是否可以使用NServiceBus 2.0?

2 个答案:

答案 0 :(得分:1)

我认为序列化程序是基于端点指定的,因此使用该端点的所有消息都将使用相同的序列化程序。

但是,如果您遵循每个端点/队列的一个消息类型的死记硬背NServiceBus建议,那么您可以有效地隔离一种消息类型并为其使用不同的序列化器。

但是,我很好奇,对于需要二进制序列化的一种消息类型有什么特别之处?

编辑以回复评论

Distributor info在使用分发服务器的路由下间接提到了这一点。 Udi Dahan经常在NServiceBus Yahoo Group中提出建议,尽管提供链接很困难,因为搜索很差。

基本上,我们的想法是,您不希望高优先级消息被卡在低优先级消息之后,并且这也为您提供了在必要时扩展某些消息处理的最大灵活性。

因为MsmqTransportConfig只允许指定一个InputQueue,所以每个队列只有一个消息类型也意味着每个端点只有一个消息处理程序。

要解决映像问题,如果将字节数组编码为Base64编码的字符串,则仍可以将其封装在XML格式的消息中。它并不理想,但是如果你的图像不是太大,那么这样做可能比在一种消息类型上使用不同的序列化器更麻烦。

另一个选择是将带外的图像数据存储在数据库或文件系统中,然后分别通过ID或路径引用它。

答案 1 :(得分:0)

版本2中不可能。但可以使用版本5及更高版本http://docs.particular.net/samples/pipeline/multi-serializer/

中的管道来完成