Отправка Castle Proxy из NHibernate с помощью MassTransit через MSMQ вызывает исключение StackOverflowException - PullRequest
0 голосов
/ 29 декабря 2010

Я пытаюсь отправить сообщение через MassTransit через MSMQ. Сообщение содержит два свойства, которые являются типами, полученными из запроса NHibernate, и содержат прокси-замки (для отложенной загрузки).

Если я отправляю сообщение (используя bus.Endpoint.Send(msg)) с прокси как часть сообщения, я генерирую исключение StackOverflowException. Если я не назначу эти два свойства и оставлю их пустыми, сообщение отправится в очередь без проблем.

Это так, или я что-то не так делаю с настройкой MSMQ / MassTransit?

Если нет, нужно ли мне использовать что-то вроде AutoMapper, чтобы избавиться от этих прокси?

1 Ответ

3 голосов
/ 29 декабря 2010

Вероятно, это исключение, основанное на сгенерированных динамических прокси и используемом сериализаторе. Я предполагаю, что это сериализатор XML по умолчанию? Я бы опубликовал вопрос на странице github для MT, чтобы мы могли посмотреть на это: https://github.com/MassTransit/MassTransit

Эти сообщения должны рассматриваться как контракты для разделения между процессами. Используя сущности NHibernate, эти сервисы объединяются не только с сообщениями, поскольку изменение БД может повлиять на других потребителей. В идеале вы всегда должны сопоставить это с другим объектом, прежде чем передать его.

Есть ли причина, по которой вы не просто bus.Publish(msg) вместо того, чтобы отправлять напрямую в конечную точку шины? Вы можете присоединиться к списку рассылки MT и обсудить это более подробно: http://groups.google.com/group/masstransit-discuss

Надеюсь, это поможет!

...