1

我正在尝试建立一个通用的 rebus 发布服务,它允许我们的任何 Web 应用程序为订阅者推送事件消息。该服务的唯一工作是维护订阅并重新发布它收到的任何消息。我想避免在服务中创建特定的 IHandleMessage 实现,因为它不需要知道传入消息的类型以外的任何信息。

我尝试了多种方法(例如 IHandleMessages),并且当它尝试反序列化它没有程序集的消息时,rebus 崩溃。

4

1 回答 1

1

哦,是的,你当然可以这样做——但只有在你完全避免反序列化消息的情况下才能实现真正的传递,你可以通过使用自己的序列化程序轻松地做到这一点。

如果您将ISerializeMessages实现为 ,PassThroughSerializer则可以像这样配置发布者:

Configure.With(...) .(...) .Serializer(s => s.Use(new PassThroughSerializer()) .(...)

如您所见,您的序列化程序需要能够将传入的ReceivedTransportMessage(基本上只是标题和 a 的字典byte[])转换为 a Message,这是相同的标题和object[]

在您的情况下,您实际上不会进行任何反序列化,而只是将其传递byte[]到.MessageTransportMessageToSend

我希望这是有道理的 :)

于 2015-03-11T21:33:28.000 回答