我有一个我不完全理解的问题。当我以这种方式创建消息时,它可以工作:
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);
}
在调试过程中,我可以清楚地看到使用这两种方法创建了相同的类型。知道为什么第二种方法不起作用吗?
这就是我订阅消息的方式:
bus.Subscribe<StartFakeJobCommand>("StartFakeJobCommand_ID", message => fakeJob.Handle(message));