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