1

我是新的Azure開發人員。我的場景就像管理員將通過網站/ wp8發佈新主題/隊列,工作人員應該在wp8中獲得關於新添加的主題/隊列的通知(通過推送通知)。此時我已準備好所有的部分,如主題/隊列創建,發送接收。但它在拉動的基礎上工作。意義管理器可以創建主題併發布消息。那麼工人必須訂閱接收消息的主題,並且每次檢查是否有新消息?如何從新添加的主題或隊列中獲取通知?

所以我想根據通知製作這個系統。我的意思是每當在主題用戶中新添加的內容都應該得到一個通知(通過推送通知)。那麼你能建議我如何實現這一目標?如果主題添加或刪除了,是否有服務總線產生任何事件?提前致謝!

+1

對於推送通知到WP8,看看移動服務。 http://www.windowsazure.com/en-us/documentation/articles/mobile-services-windows-phone-get-started-push/ –

+0

正如我所說的一切工作,即主題/隊列創建,發送,接收,刪除,發送推送,接收推送。只是我錯過了來自主題/隊列的事件,如果有新增任何內容。 – masiboo

+0

在c#實現中,您可以使用Client.OnMessage方法來輪詢預訂消息。 https://msdn.microsoft.com/en-us/library/azure/microsoft.servicebus.messaging.onmessageoptions.aspx。我想在node.js中做到這一點,但似乎我必須手動進行輪詢......? – keft

回答

1

不幸的是,創建隊列/主題時沒有「通知掛鉤」。我建議的兩個選擇是使用服務總線管理API定期掃描新的隊列/主題,或者更好地設置一個「通知主題」,然後您的工作人員角色實例可以監聽。將消息放入此主題可以是「管理者」進程在提供新主題/隊列時執行的另一個操作。然而,如果你能解釋你想要完成的更大的場景,我不禁會懷疑,有可能是一種更好的方式來完成你所追求的。經過一段時間後,所有這些話題/隊列都可能帶來一些管理挑戰。

+0

感謝您的回覆。對於我的項目,我必須使用Azure,因爲推送通知,sql數據庫等。因此,對於我的情況,Azure消息傳遞系統只是選項,即主題/隊列。現在情景。假設有一個名爲通告的主題。我大的經營者通過網站或手機客戶端發送消息「在自助餐廳13:00全部免費啤酒」。每個人都應該在移動客戶端收到推送通知「公告話題中的新消息」。然後Receiver在收到通知後會檢查話題消息。否則,他必須每隔一段時間檢查一次主題消息以獲取任何新消息。 – masiboo

+0

因此,您推送通知,然後將消息放入包含與通知相關的其他詳細信息的隊列中?老實說,我不認爲這裏的主題是你最好的選擇。相反,我會站在一個薄的façade服務層(移動服務可以正常工作),可以從Azure表存儲中檢索消息有效載荷。這完全消除了處理隊列管理的需要,鞏固了移動應用程序的認證/授權,並且仍然以可比價格提供相同級別的功能。 – BrentDaCodeMonkey

+0

我是一位新的Azure開發人員,所以我不知道我的目標的最佳選擇。目標是立即與幾個人分享一條或多條消息。這個消息可能太大而無法通過推送消息傳遞。 Push消息是通知用戶通知他們離開並檢查Azure中是否收到新消息的選項。在天藍色的時候,它可能是隊列,主題,存儲或其他東西。當然,如果我能達到同樣的目標,便宜的服務會更好。我還沒有觸摸表格存儲。所以表格存儲是否有任何更新事件處理程序和共享選項?這樣我可以捕獲事件併發送推送通知。 – masiboo

2

當然,我們確實有一些事件會在主題添加新消息時通知客戶端。使用消息泵機制,您可以使用有效訂閱將客戶端連接到主題消息。

本質上,下面的代碼展示瞭如何訂閱該主題。

static void Main(string[] args) 
    { 


     SubscriptionClient Client = null; 

     OnMessageOptions options; 
     string connectionString = "your topic Endpoint"; 

     Client = 
      SubscriptionClient.CreateFromConnectionString 
        (connectionString, "YourTopicName", "YoursubscriberName"); 

     // Configure the callback options. 
     options = new OnMessageOptions(); 
     options.AutoComplete = false; 
     options.AutoRenewTimeout = TimeSpan.FromMinutes(1); 

     Client.OnMessage((message) => 
     { 
      try 
      { 
       Console.WriteLine("Topic Message : ID :" + message.MessageId + " , " + message.Label); 


       message.Complete(); 



      } 
      catch (Exception exp) 
      { 

       message.Abandon(); 
       Console.WriteLine("**Error Reciving Message**"); 

      } 


     }, options); 

     Console.ReadLine(); 
    } 
+0

雖然代碼是讚賞,它應該總是有一個附帶的解釋。這並不需要很長時間,但它是可以預料的。 – peterh

+0

不知道如何回答下來,甚至交叉驗證它:( –

+0

如果你有反饋,以及聽取他們,這有助於獲得更多upvotes。 – peterh

相關問題