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

相关问题