在C和PHP之间集成Azure服务总线消息

在C和PHP之间集成Azure服务总线消息,azure,integration,servicebus,Azure,Integration,Servicebus,在上面,我看到PHP总线库有$message->getBody,其中C库有message.getBody;并期望一个类型 我们如何以灵活的方式在PHP/C之间以简单类的形式发送消息,在收到新的消息版本时不会中断?我猜基于PHP的代理消息的默认数据类型是字符串。根据您在此处发送的内容,有几个选项: 使用BrokeredMessage上的key-value pairs集合发送数据。php:$message->setPropertyKey,Value;或者c:brokeredMessage.Prope

在上面,我看到PHP总线库有$message->getBody,其中C库有message.getBody;并期望一个类型


我们如何以灵活的方式在PHP/C之间以简单类的形式发送消息,在收到新的消息版本时不会中断?

我猜基于PHP的代理消息的默认数据类型是字符串。根据您在此处发送的内容,有几个选项:

使用BrokeredMessage上的key-value pairs集合发送数据。php:$message->setPropertyKey,Value;或者c:brokeredMessage.Properties.AddKey,Value; 将所有对象序列化为json,然后插入BrokeredMessage正文。如果在C中检索,请使用BrokeredMessage.GetBody
另一个提示是,在C语言中,只能调用BrokeredMessage.GetBody一次。

您尝试了什么,哪些不起作用?你的问题没有表现出你自己解决问题的企图?如果收到更新的消息版本,那么问题的根源并不会中断。我想说的是,避免使用泛型方法,而是自己进行序列化/反序列化。@astaykov感谢您的回答,总线的样板代码是简单的部分,是的,我们可以发送消息好的-我的问题是这些消息应该是什么?我曾经考虑过JSON,但确实需要一些指导,因为我对Azure PHP到C的了解很少,这可能很危险!此外,C方法似乎只接受GetBody的泛型类型,说到它。。。你是对的。只有通用的GetBody,但也有重载,您可以使用重载注入自己的XmlObjectSerializer实例。在这种情况下,您的T可能是一个非常简单的.NET对象,只有一个文本属性,即JSON负载。我认为这是在不改变队列逻辑的情况下处理多种消息格式的最佳方法。Azure Java Service Bus SDK是否也存在此问题?