【发布时间】:2010-12-29 10:37:02
【问题描述】:
我正在尝试通过 MSMQ 使用 MassTransit 发送消息。该消息包含两个属性,它们是从 NHibernate 查询获得的类型并包含 Castle Proxies(用于延迟加载)。
如果我发送带有代理的消息(使用bus.Endpoint.Send(msg))作为消息的一部分,我会生成一个 StackOverflowException。如果我不分配这两个属性并将它们保留为 null,则消息将毫无问题地通过队列触发。
是这样吗,还是我的 MSMQ/MassTransit 设置有问题?
如果没有,我是否需要使用 AutoMapper 之类的东西来摆脱这些代理?
【问题讨论】:
-
您在尝试访问这些延迟加载的属性时是否收到此 StackOverflowException 异常?或者只是通过总线发送消息?
-
只需发送消息即可。在到达 MSMQ 之前发生在生产者端。
-
你能创建一个独立的测试用例来重现这个吗?
-
无论如何,是的,我会先将其映射到 DTO,然后再通过网络发送。
-
是的 - 使用 AutoMapper 将其映射到 DTO 有所帮助,但在另一端出现了 NHibernate 怪异(因为会话处于不同的进程中)。需要重新考虑架构。
标签: c# nhibernate msmq castle masstransit