私は単純な例でMassTransitで遊んでいますが、正しいデータを受け取っていないので、間違っていることはわかりません。 は、私はこのコードをデバッグする場合、私はTweetCreatedCommandが公開されてどのように見ることができます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();
}
にHomeControllerに次のコードを持つ単純なasp.net-MVCアプリを持っているとのデータがMSMQキューにOKですが、ハンドラがデータを受け取ったとき: TweetCreatedCommand.TweetId:00000000-0000-0000-0000-000000000000そしてそれは別のものでなければならない TweetCreatedCommand.Messageはnullであり、 "foo!" TweetCreatedCommand.TimeStampは01/01/01です 誰がnullで、 "CDA"にする必要があります
何が問題なのですか?
すべてのヘルプは
ありがとう、今、それは完全に読み取り専用フィールドを変更して動作します – cdiazal
私はUseBinarySerializerを試しても動作していません。パブリッシュ時にTweetCreatedCommandコンストラクタを呼び出しますが、パブリッシュ後にコンストラクタを再度コールしないため、変数データがnullになります。 – cdiazal
メーリングリスト(https://groups.google.com/forum/#!forum/masstransit-discuss;私は何らかの理由でBinarySerializerを使用していませんでしたが、私はそれのまわりにいくつかの追加の問題があることを確信しています。さらに、https://github.com/MassTransit/MassTransit/tree/master/src/MassTransit.Tests/Serializationの仕様をチェックして、各シリアライザを実行してください。 – Travis