我正在开发一个部署在Azure中的网站。现在我正在使用Azure队列向用户发送电子邮件。我通过睡眠当前线程在每60秒后检查队列中是否收到消息。
我的问题是我不想等待线程并等待60秒,而是我想在队列实际收到消息时触发消息发送功能。我找到了Service Bus Topics/Subscriptions的机制,但我想知道我是否可以使用Azure队列实现相同的订阅机制(不使用主题/订阅)。这可能吗? Azure队列是否可以侦听某些内容,以便仅在向队列接收消息时才能运行。我当然不想睡觉。
谢谢。
答案 0 :(得分:1)
之前已经问过支持长轮询的Azure队列问题 - 这就是为什么我将此标记为重复。
关于线程休眠:不确定为什么当然不想让线程休眠以侦听队列。它可以是一个单独的线程,这意味着你不会占用其他进程。并且......只要队列中有消息,您就不需要在调用GetMessage()
之间休眠 - 只需继续读取,直到队列为空。
另外:为什么要等60秒?从1秒开始,也许是16秒的指数退避,然后留在那里?每隔几秒就要花费很多钱(每100K交易一分钱)。这是一种非常常见的模式,即使有多个角色实例正在运行。