AMQP.Net Lite与POCO课程

时间:2018-03-01 11:32:07

标签: .net-core amqp azureservicebus

我们正在使用Azure团队中的https://github.com/Azure/amqpnetlite

描述说我们必须在消息总线上使用AmqpContractAmqpMember属性类,如ActiveMQ。

我们还有很多类,我们想要迁移到这个Amqp库,但是可以使用没有这些属性的序列化器并直接使用我们的POCO类吗?

另一种解决方法可能是(?)将序列化或类分类到json中并使用包装类来发送我们的有效负载:

   [AmqpContract]
   public class OurMessage
   {
      [AmqpMember]
      public string JsonPayload {get;set;}
   }

或者我们应该避免这种解决方法吗?

1 个答案:

答案 0 :(得分:0)

目前不支持您提到的POCO课程。您需要选择另一个序列化程序。获得JSON字符串或字节数组后,无需定义包装类。只需直接创建带有效负载的AMQP消息,然后从接收方的消息体中获取它。

// sender
var msg = new Message(jsonPayload);
sender.Send(msg);

// receiver
var msg2 = receiver.Receive();
var jsonPayload = msg2.GetBody<string>();

字节数组可以做同样的事情。

AMQP序列化程序设计简单,所有内容都必须明确注释。对于大多数情况,这是可能的,它有助于避免双重编码,并使与其他AMQP客户端的操作更容易。