2017-08-30 40 views
0

我最近開始使用Azure服務總線。我能夠使用我的控制檯應用程序從隊列發送和接收消息,並能夠在控制檯應用程序中使用一個WCF服務,然後將響應發送到天青隊列。但我有一些不同的場景。我不想創建任何控制檯應用程序,因爲我想使用SOAPUI發送響應(對azure隊列)。我將在IIS上託管服務,並通過SoapUI請求,我應該在我的隊列中得到響應。請爲此提出一些解決方案。任何幫助將不勝感激。如何將WCF響應發送到Azure隊列

+0

您的意思是說,調用服務會導致隊列中的消息,或者服務的使用者是否應將結果放入隊列中?如果最後一個是你正在尋找的那個,你將不得不創建一個連接到服務總線的客戶端。 –

回答

0

我建議你在service方法中增加一個額外的參數。您可以從SoapUI傳遞'true'以將結果保存到存儲隊列中。以下代碼供您參考。

public CompositeType GetDataUsingDataContract(CompositeType requestData, bool saveResultToQueue = false) 
{ 
    //Process the request data and get the result 
    CompositeType result = GetResult(requestData); 
    if (saveResultToQueue) 
    { 
     //Serialize the result to a string 
     XmlSerializer serializer = new XmlSerializer(typeof(CompositeType)); 
     MemoryStream ms = new MemoryStream(); 
     serializer.Serialize(ms, result); 

     string serilizedResult = string.Empty; 

     using (StreamReader sr = new StreamReader(ms)) 
     { 
      serilizedResult = sr.ReadToEnd(); 
     } 

     //Add a new message to the queue 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse("StorageConnectionString"); 
     CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); 
     CloudQueue queue = queueClient.GetQueueReference("myqueue"); 
     queue.CreateIfNotExists(); 
     CloudQueueMessage message = new CloudQueueMessage(serilizedResult); 
     queue.AddMessage(message); 
    } 
    return result; 
} 
相關問題