完全に理解できない問題があります。この方法でメッセージを作成すると、次のように機能します。
var message = new StartFakeJobCommand();
using (var publishChannel = ApplicationSingleton.Instance.RabbitBus.OpenPublishChannel())
{
publishChannel.Publish(message);
}
メッセージがキューに入れられ、リスナーがそれを消費できます。しかし、このようにActivator.CreateInstanceを使用してメッセージを作成すると、機能しません。キューには何も発行されません。
var t = Type.GetType(string.Format("{0}.{1},{2}", job.CommandNamespace, job.Command, job.AssemblyName));
if (t == null)
throw new ArgumentException();
var message = Activator.CreateInstance(t);
using (var publishChannel = ApplicationSingleton.Instance.RabbitBus.OpenPublishChannel())
{
publishChannel.Publish(message);
}
デバッグ中に、両方の方法を使用して同じタイプが作成されていることがはっきりとわかります。2番目のアプローチが機能しない理由は何ですか?
これは私がメッセージを購読する方法です:
bus.Subscribe<StartFakeJobCommand>("StartFakeJobCommand_ID", message => fakeJob.Handle(message));