1
通过development notes from Microsoft for PHP Azure bus,我看到PHP总线库有$message->getBody()
,其中C#库有message.GetBody<T>();
,并且期望有一个类型。在C#和PHP之间集成Azure服务总线消息
我们将如何以灵活的方式在PHP/C#之间发送消息(作为简单的类),如果接收到更新的消息版本,则不会中断?
通过development notes from Microsoft for PHP Azure bus,我看到PHP总线库有$message->getBody()
,其中C#库有message.GetBody<T>();
,并且期望有一个类型。在C#和PHP之间集成Azure服务总线消息
我们将如何以灵活的方式在PHP/C#之间发送消息(作为简单的类),如果接收到更新的消息版本,则不会中断?
我的猜测是基于php的代理消息的默认数据类型是字符串。根据您在这里发送的内容有几种选择:
$message->setProperty("Key", "Value");
或c#:brokeredMessage.Properties.Add("Key","Value");
BrokeredMessage.GetBody<string>()
检索另一个秘诀是,在C#中,你只能叫BrokeredMessage.GetBody()一次。
你尝试了什么,什么不起作用?您的问题没有显示任何尝试自行解决的问题?如果要收到一个更新的消息版本,那么问题的根源'不会中断'我会说'避免使用泛型方法,而是自己做序列化/反序列化。 – astaykov
@astaykov感谢您的回复,公交车的样板代码是容易的部分,是的,我们可以发送消息确定 - 我的问题是这些消息应该是什么?我曾经想过JSON,但是真的需要一些方向,因为我对Azure PHP到C#的小知识可能很危险!此外,C#方法似乎只接受GetBody的通用类型() –
g18c
说到......你是对的。只有通用GetBody,但也有重载[GetBody(XmlObjectSerializer序列化程序)](http://msdn.microsoft.com/en-us/library/hh125098.aspx),您可以使用它来注入您自己的XmlObjectSerializer实例。在这种情况下,你的'T'可能是一个非常简单的带有单个Text属性的.NET对象,它是JSON有效载荷。我认为这是处理多种消息格式而不改变队列逻辑的最佳方式。 –
astaykov