【发布时间】:2012-11-17 20:20:40
【问题描述】:
我看到消息的最大大小为 4 MB。我有一个要求,我需要发送更大尺寸的消息以避免数据库往返。有没有办法做到这一点?
谢谢
【问题讨论】:
-
您是否假设您将使用 XML 序列化程序?切换到二进制可能会让你接近。
-
对不起,我忘了提。我正在使用二进制序列化器。
标签: c# message-queue nservicebus
我看到消息的最大大小为 4 MB。我有一个要求,我需要发送更大尺寸的消息以避免数据库往返。有没有办法做到这一点?
谢谢
【问题讨论】:
标签: c# message-queue nservicebus
是的,您可以启用称为数据总线的功能并将属性标记为 DataBusProperty,这将以另一种方式发送 f.e.通过文件共享或 Windows azure blob 存储。
请参阅以下示例了解如何执行此操作: https://github.com/Particular/NServiceBus.Msmq.Samples/tree/master/DataBus
希望这会有所帮助。
【讨论】:
执行此操作的一般方法是让消息引用数据,而不是让数据成为消息正文的一部分。引用的数据本身可以存储在数据库或键/值存储或文件系统中。将有一个往返,因为必须首先存储然后检索引用的数据,但您可以将其整体忽略不计。过分关注自己的往返行程是过早的优化。
正如 Yves Goeleven 所指出的,使用 NServiceBus v3+,您可以将消息属性标记为作为引用发送并存储在文件系统或其他东西中。这是以对消息处理代码非常透明的方式完成的。
【讨论】: