有谁知道两个应用程序是否可以使用Binary Serializer通过MassTransit.RuntimeServices相互通信?

一旦将总线配置为使用二进制序列化程序,调用UseSubscriptionService()方法后应用程序就会超时。当我查看MassTransit.RuntimeServices流程的输出时,我看到抛出了一个异常:

System.Runtime.Serialization.SerializationException: Failed to deserialize message


MassTransit.RuntimeServices是否需要访问消息的内容(并因此反序列化)才能执行路由?

以下是我配置它们的代码片段:

应用1

Bus.Initialize(sbc =>
                {
                    sbc.UseMsmq();
                    sbc.UseBinarySerializer();
                    sbc.VerifyMsmqConfiguration();
                    sbc.UseMulticastSubscriptionClient();
                    sbc.ReceiveFrom("msmq://localhost/EGQueue");
                    sbc.UseSubscriptionService("msmq://localhost/mt_subscriptions");
                });


应用2

Bus.Initialize(sbc =>
        {
            sbc.UseMsmq();
            sbc.UseBinarySerializer();
            sbc.VerifyMsmqConfiguration();
            sbc.UseMulticastSubscriptionClient();
            sbc.ReceiveFrom("msmq://localhost/M3AgentQueue");
            sbc.Subscribe(c => c.LoadFrom(Container));
            sbc.UseSubscriptionService("msmq://localhost/mt_subscriptions");
        });

最佳答案

您需要编译使用二进制序列化程序的自己的Runtime Services版本。这是您唯一需要的更改,但是串行器需要在任何地方都匹配。

关于c# - MassTransit二进制序列化程序和MassTransit.RuntimeServices问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19797286/

10-12 04:46