我们正在使用Azure团队中的https://github.com/Azure/amqpnetlite。
描述说我们必须在消息总线上使用AmqpContract
和AmqpMember
属性类,如ActiveMQ。
我们还有很多类,我们想要迁移到这个Amqp库,但是可以使用没有这些属性的序列化器并直接使用我们的POCO类吗?
另一种解决方法可能是(?)将序列化或类分类到json中并使用包装类来发送我们的有效负载:
[AmqpContract]
public class OurMessage
{
[AmqpMember]
public string JsonPayload {get;set;}
}
或者我们应该避免这种解决方法吗?
答案 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客户端的操作更容易。