1
我正在用MassTransit玩一個簡單的例子,我不知道我做錯了什麼,因爲我沒有收到正確的數據。 我在HomeController的用下面的代碼一個簡單的asp.net-MVC應用程序Masstransit沒有處理正確的值
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」
什麼是錯?
任何幫助,將不勝感激
非常感謝你,現在它完美地改變只讀字段 – cdiazal
如果我嘗試使用UseBinarySerializer它不工作。它在發佈時調用TweetCreatedCommand構造函數,但它在發佈之後不再調用構造函數,因此變量數據爲空。 – cdiazal
將其列入郵件列表:https://groups.google.com/forum/#!forum/masstransit-discuss;我沒有任何理由使用過BinarySerializer,我確信周圍還有一些額外的陷阱,只是想不到。此外,請查看規格:https://github.com/MassTransit/MassTransit/tree/master/src/MassTransit.Tests/Serialization大部分隨後針對每個序列化程序運行。 – Travis