【发布时间】:2021-06-05 19:45:34
【问题描述】:
当我的应用需要发送电子邮件时,它会创建一个 db 条目并将其放入数据库中,然后将一条消息放在由作为 WebJob 运行的 Azure 函数监控的服务总线上。
当 WebJob 进程完成发送电子邮件时,我希望它有条件地在 Service Bus 队列中放置一条新的预定消息 - 实际上,我希望 WebJob 在 5 分钟内被唤醒,以查看是否有电子邮件需要发送的db。
但是如果队列上已经有一条消息需要 WebJob 处理,那么我不想把这个预定的消息放在队列中,我只想完成处理,因为我知道队列正在处理立即再次唤醒 WebJob,所以这次不需要在队列中添加 5 分钟的预定消息,它将在下一次 WebJob 完成后放入队列。
我也在使用 App 中的定时消息,因为将来有时需要发送消息,所以我将定时消息添加到服务总线队列中,以在特定时间唤醒发送者。
我想对队列执行 peekBatch 以查看是否已经有一条消息会导致 WebJob 在 5 分钟过去之前被唤醒。如果有,我想跳过将新消息放入队列,但如果没有,我想将消息添加到队列中。
需要明确的是,此 peekBatch 需要发生在使用“ServiceBusTrigger”的 WebJob 内的 Azure 函数中。
我想不通的是如何访问一些东西来执行 PeekBatch。我找到了examples 如何从 ServiceBusTrigger 函数中发送消息。
【问题讨论】:
标签: azure azure-functions azureservicebus azure-servicebus-queues