MassTransit二进制序列化器和MassTransit.RuntimeServices问题

时间:2013-11-05 19:32:10

标签: c# .net msmq masstransit

有没有人知道两个应用程序是否可以使用二进制序列化器通过MassTransit.RuntimeServices相互通信?

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

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");
        });

1 个答案:

答案 0 :(得分:1)

您需要编译自己的使用二进制序列化程序的运行时服务版本。这是您需要的唯一变化,但Serializer需要在任何地方匹配。