4

我已经阅读了真正的消息传递,它不是在总线上发送有效负载,而是发送一个标识符。在我们的案例中,我们有很多遗留应用程序/服务,它们旨在接收接近 4MB(接近 MSMQ 限制)的消息 (xml) 的有效负载。有没有办法让 nService 总线自动处理大负载和持久化消息或其他解决方法,以便发布者/订阅者服务不必担心负载大小,也不必担心如何去/重新水化有效载荷?先感谢您。

4

3 回答 3

1

您可以使用消息序列模式。在 NServiceBus 中,您将在发送方中拆分有效负载,将块包装在自定义的“序列”IMessage 中,然后在另一端实现一个 saga 以提取块并重新组装。您需要在错误处理和超时方面付出一些努力。

于 2010-05-20T01:02:27.340 回答
1

您始终可以使用压缩消息的快速“修复”。

使用二进制序列化器序列化的 POCO 可以大幅度压缩。我们看到我们的消息从 20mb 压缩到 3.1mb。

因此,如果您的消息徘徊在 4mb 左右,只需编写一个 IMessageSerializer 来自动压缩在线上的消息可能会很简单。

于 2010-06-17T15:30:40.253 回答
0

我不知道有任何内部 NServiceBus 功能可以将额外数据与带外消息相关联。

我认为你是对的 - 如果整个有效负载不能在限制范围内,那么最好自己将其保留在其他地方,然后传递一个 ID。

但是,您可以设计一个消息结构,使消息可以实现一个 IHasPayload 接口(可能包含一个 ID 和一个类型?),然后您的应用程序逻辑可以有一个通用的方法来获取给定的有效负载IHasPayload 消息。

于 2010-05-04T15:07:13.990 回答