1

我正在通过一个简单的示例使用 MassTransit,但我不知道我做错了什么,因为我没有收到正确的数据。我有一个简单的 asp.net-mvc 应用程序,在 HomeController 中有以下代码

public class TweetCreatedCommand : Command
{
    public readonly string Message;
    public readonly DateTime Timestamp;
    public readonly Guid TweetId;
    public readonly string Who;

    public TweetCreatedCommand(Guid tweetId, string message, DateTime timeStamp, string who)
    {
        TweetId = tweetId;
        Message = message;
        Timestamp = timeStamp;
        Who = who;
    }
}

public ActionResult Index()
    {
        TweetCreatedCommand data;

        Bus.Initialize(sbc =>
        {
            sbc.UseMsmq();
            sbc.VerifyMsmqConfiguration();
            sbc.UseMulticastSubscriptionClient();
            sbc.ReceiveFrom("msmq://localhost/test_queue");
            sbc.Subscribe(subs =>
            {
                subs.Handler<TweetCreatedCommand>(msg => data = new TweetCreatedCommand(msg.TweetId, msg.Message,msg.Timestamp,msg.Who));
            });
        });

        Bus.Instance.Publish(new TweetCreatedCommand(Guid.NewGuid(),"foo!",DateTime.Now,"CDA"));

                    ViewData.Model = data;

        return View();
    }

如果我调试这段代码,我可以看到 TweetCreatedCommand 是如何发布的,并且 MSMQ 队列中的数据正常,但是当处理程序接收到数据时:TweetCreatedCommand.TweetId 是:00000000-0000-0000-0000-000000000000 应该是其他东西 TweetCreatedCommand.Message 是空的,它应该是“foo!” TweetCreatedCommand.TimeStamp 是 01/01/01 谁为空,应该是“CDA”

怎么了??

任何帮助,将不胜感激

4

1 回答 1

1

MassTransit 的默认序列化仅适用于属性。尝试将您的只读字段更改为属性,序列化程序应正确填充数据。如果需要只读字段,请更改为BinarySerializer(默认为 JSON)。

于 2012-05-07T22:17:06.663 回答