Azure 如何从中获取有关新添加主题或队列的通知?

Azure 如何从中获取有关新添加主题或队列的通知?,azure,windows-phone-8,notifications,azure-queues,azure-servicebus-queues,Azure,Windows Phone 8,Notifications,Azure Queues,Azure Servicebus Queues,我是新的Azure开发者。我的场景类似于manager将通过网站/wp8发布新的主题/队列,而worker应该在wp8中获得关于新添加的主题/队列的通知(通过推送通知)。现在我已经准备好了所有的部分,比如主题/队列创建、发送和接收。但它是在拉动的基础上工作的。这意味着经理可以包装主题并发布消息。然后,工作人员必须订阅接收消息的主题,并在每次拉动时检查是否有新内容 所以我想让这个系统基于通知。我的意思是,每当在主题中新添加任何内容时,用户都应该得到一个通知(通过推送通知)。那么你能建议我如何实现这

我是新的Azure开发者。我的场景类似于manager将通过网站/wp8发布新的主题/队列,而worker应该在wp8中获得关于新添加的主题/队列的通知(通过推送通知)。现在我已经准备好了所有的部分,比如主题/队列创建、发送和接收。但它是在拉动的基础上工作的。这意味着经理可以包装主题并发布消息。然后,工作人员必须订阅接收消息的主题,并在每次拉动时检查是否有新内容

所以我想让这个系统基于通知。我的意思是,每当在主题中新添加任何内容时,用户都应该得到一个通知(通过推送通知)。那么你能建议我如何实现这个目标吗?如果添加或删除主题等,是否会从服务总线生成任何事件?提前谢谢

不幸的是,创建队列/主题时没有“通知挂钩”。我建议的两个选项是使用服务总线管理API定期扫描新队列/主题,或者更好的是,设置一个“通知主题”,然后您的工作人员角色实例可以侦听该主题。当“管理器”进程提供新的主题/队列时,将消息拖放到此主题中可能是它执行的另一个操作

然而,如果你能解释一下你想要完成的更大的场景,我不禁怀疑可能有更好的方法来完成你想要的。一段时间后,所有这些主题/队列可能会带来一些管理挑战

不幸的是,创建队列/主题时没有“通知挂钩”。我建议的两个选项是使用服务总线管理API定期扫描新队列/主题,或者更好的是,设置一个“通知主题”,然后您的工作人员角色实例可以侦听该主题。当“管理器”进程提供新的主题/队列时,将消息拖放到此主题中可能是它执行的另一个操作


然而,如果你能解释一下你想要完成的更大的场景,我不禁怀疑可能有更好的方法来完成你想要的。一段时间后,所有这些主题/队列可能会带来一些管理挑战

当然,我们有一些事件会在新消息添加到主题时通知客户端。通过消息泵机制,您可以将客户端与具有有效订阅的主题消息挂钩

本质上,下面的代码展示了如何订阅该主题

    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();
    }

当然,我们有一些事件会在新消息添加到主题时通知客户端。通过消息泵机制,您可以将客户端与具有有效订阅的主题消息挂钩

本质上,下面的代码展示了如何订阅该主题

    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();
    }

要将通知推送到WP8,请查看移动服务。正如我提到的,一切都在运行,即主题/队列创建、发送、接收、删除、发送推送、接收推送。只是,如果有新添加的内容,我在主题/队列中缺少一个事件。在c#实现中,您可以使用Client.OnMessage方法,该方法将轮询订阅中的消息。我也想在node.js中这样做,但似乎我必须手动进行轮询?要将通知推送到WP8,请查看移动服务。正如我提到的,一切都在运行,即主题/队列创建、发送、接收、删除、发送推送、接收推送。只是,如果有新添加的内容,我在主题/队列中缺少一个事件。在c#实现中,您可以使用Client.OnMessage方法,该方法将轮询订阅中的消息。我也想在node.js中这样做,但似乎我必须手动进行轮询?谢谢你的回复。对于我的项目,由于推送通知、sql数据库和其他原因,我必须使用Azure。因此,就我而言,Azure消息传递系统是唯一的选项,即主题/队列。现在是情景。假设有一个主题名为“公告”。我的大经理通过网站或手机客户端发送了一条信息“13:00在自助餐厅为所有人免费提供啤酒”。每个人都应该在移动客户端“公告主题中的新消息”中收到推送通知。然后接收者在收到通知后将检查主题消息。否则,他必须时不时地检查主题消息是否有任何新消息。因此,您推送通知,然后将消息放入包含与通知相关的其他详细信息的队列?老实说,我不认为话题是你最好的选择。相反,我会建立一个薄的façade服务层(移动服务可以很好地实现这一点),它可以从Azure表存储中检索消息负载。这完全消除了处理队列管理、整合移动应用程序的身份验证/授权的需要,并且仍然以可比的价位提供相同级别的功能。我是新的Azure开发人员,因此我不知道实现我的目标的最佳选择。目标是立即与几个人共享一条或多条消息。此消息可能太大,无法通过推送消息传递。推送消息是一个选项,通知用户通知他们去检查你在Azure中收到的新消息。在azure中,它可以是队列、主题、存储或其他内容。当然,如果我能达到同样的目标,更便宜的服务会更好。我还没有接触表存储。那么表存储是否有任何更新事件处理程序和共享选项?这样我就可以捕捉事件并发送推送通知。所以我会把这个推送回去。如果您计划首先发送通知,那么您在某个地方有代码需要处理该事件。该代码将发送设备通知,并将扩展消息有效负载保存在某个地方,以便设备用户返回并获取。如果触发此事件的是另一个设备执行某个操作(例如通过snapchat或类似服务向某人发送pic),则触发事件就是设备请求。在这种情况下,我再次建议您采取高峰