我们正在使用Azure团队的https://github.com/Azure/amqpnetlite。
描述说我们必须在消息总线上使用AmqpContract
和AmqpMember
属性类,如ActiveMQ。
我们还有很多类,我们想要迁移到这个Amqp库,但是可以使用没有这些属性的序列化器并直接使用我们的POCO类吗?
另一个解决方法可能是(?)序列化或类到json并使用包装类来发送我们的有效负载:
[AmqpContract]
public class OurMessage
{
[AmqpMember]
public string JsonPayload {get;set;}
}
或者我们应该避免这种解决方法?
您提到的POCO课程目前不受支持。您需要选择另一个序列化程序。获得JSON字符串或字节数组后,无需定义包装类。只需直接创建带有效负载的AMQP消息,然后从接收方的消息体中获取它。
// sender
var msg = new Message(jsonPayload);
sender.Send(msg);
// receiver
var msg2 = receiver.Receive();
var jsonPayload = msg2.GetBody<string>();
字节数组也可以做同样的事情。
AMQP序列化器设计简单,必须明确注释所有内容。对于大多数情况,这是可能的,它有助于避免双重编码并使与其他AMQP客户端的操作更容易。