0

我正在尝试通过 MSMQ 使用 MassTransit 发送消息。该消息包含两个属性,它们是从 NHibernate 查询获得的类型并包含 Castle Proxies(用于延迟加载)。

如果我发送bus.Endpoint.Send(msg)带有代理的消息(使用 )作为消息的一部分,我会生成 StackOverflowException。如果我不分配这两个属性并将它们留空,则消息将毫无问题地通过队列触发。

是这样吗,还是我在 MSMQ/MassTransit 设置上做错了什么?

如果没有,我是否需要使用 AutoMapper 之类的东西来摆脱这些代理?

4

1 回答 1

3

根据生成的动态代理和正在使用的序列化程序,这可能是一个例外。我假设它是默认的 XML 序列化程序?我会在 MT 的 github 页面上发布一个问题,以便我们查看:https ://github.com/MassTransit/MassTransit

这些消息应该被视为进程之间解耦的契约。使用 NHibernate 实体,这些服务不仅与消息耦合,因为数据库更改可能会影响其他消费者。理想情况下,您总是会在传递它之前将其映射到另一个对象。

您是否有理由不bus.Publish(msg)直接发送到总线的端点?您可以加入 MT 邮件列表并详细讨论:http ://groups.google.com/group/masstransit-discuss

我希望这有帮助!

于 2010-12-29T20:26:02.583 回答