C# 将动态作为类类型的masstransit
我已经开始学习大众运输。下面是一个简单的例子C# 将动态作为类类型的masstransit,c#,message-queue,masstransit,C#,Message Queue,Masstransit,我已经开始学习大众运输。下面是一个简单的例子 public class YourMessage { public string Text { get; set; } } public class Program { public static void Main() { Bus.Initialize(sbc => { sbc.UseMsmq(); sbc.VerifyMsmqConfigurat
public class YourMessage { public string Text { get; set; } }
public class Program
{
public static void Main()
{
Bus.Initialize(sbc =>
{
sbc.UseMsmq();
sbc.VerifyMsmqConfiguration();
sbc.UseMulticastSubscriptionClient();
sbc.ReceiveFrom("msmq://localhost/test_queue");
sbc.Subscribe(subs=>
{
subs.Handler<YourMessage>(msg=>Console.WriteLine(msg.Text));
});
});
Bus.Instance.Publish(new YourMessage{Text = "Hi"});
}
}
如何使用masstransit实现上述目标 底线是否,您不能使用MassTransit有意义地订阅动态类型。我希望我们不会支持这种行为 通常,消息是之间的静态契约,序列化到消费对象中的唯一内容是订阅类型中标识的属性
如果你需要的话,你可以考虑使用,它可能支持这样做。我们不建议你走这条路,因为它充满了危险。根据经验,在有效载荷方面尽可能少的惊喜会使生命支持系统变得更好。因此,我应该使用类类型:)当然,非常感谢您的输入
while (isConsuming)
{
try
{
if (!mqchannel.IsOpen)
throw new Exception("Channel is closed");
BasicDeliverEventArgs e = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
IBasicProperties props = e.BasicProperties;
//Adds the message to Event Listener
onMessageReceived(rabbitMqHelper.DecodeMessage((e == null || e.Body == null) ? null : e.Body));
//Acknowledge receipt of messages to Queue
mqchannel.BasicAck(e.DeliveryTag, false);
}