多个安装了 Azure 防病毒的 VM 需要使用速览锁定模型订阅 Azure 消息队列



我们已经在多个Azure Linux VM中安装了sophos。 安装了pip,Azure服务总线SDK,并使用以下代码,我们可以在消息到达队列时使用消息。

from azure.servicebus import QueueClient, Message # Create the QueueClient
queue_client = QueueClient.from_connection_string("<connectionstring>", "taskqueue") # Receive the message from the queue with queue_client.get_receiver() as queue_receiver: 
messages = queue_receiver.fetch_next(timeout=3)
for message in messages:
print(message)
message.complete() 

我们如何使用速览锁定模型将多个 AV 服务器准确地订阅到消息队列。速览锁定可确保如果第一个 AV Linux VM 选取消息并启动扫描,则消息应仅与该特定 VM 保持锁定状态,其他 VM 不应选取此消息。

  1. 我们可以使用 SDK 进行基于事件的轮询吗?是否建议进行连续轮询。
  2. 我们如何设置速览锁定模型 - 当消息到达时,任何一个 AV 扫描 VM 都应使用该消息并将其锁定,以便任何其他 VM 不会拾取。
  3. 尽管有多个 AV 扫描虚拟机,但只有一个虚拟机应接收该消息。我们是否应该使用服务总线队列/主题。 最终目标是:应订阅服务总线的 AV VM

1 -虽然存储队列尚不支持事件,但服务总线支持事件网格,但目前仅在高级层中。

此外,对于服务总线,SDK 默认使用 AMQP,它使用全双工开放连接。

2&3 -对于队列存储,当一个接收方获取消息时,该消息对其他接收方不可见,直到特定超时。在文档中阅读有关队列服务中并发性的更多信息。

对于服务总线,可以使用扫视锁定模式来实现相同的目的。在这种情况下,您还可以为延迟的进程续订锁定。

它现在工作: 我们如何使用速览锁定模型将多个 AV 服务器准确地订阅到消息队列。速览锁定可确保如果第一个 AV Linux VM 选取消息并启动扫描,则消息应仅与该特定 VM 保持锁定状态,其他 VM 不应选取此消息。

1.我们可以使用SDK进行基于事件的轮询吗?是否建议进行连续轮询.-是的,我们可以进行基于事件的轮询。我们配置了长轮询。2.我们如何设置速览锁定模型 - 当消息到达时,任何一个 AV 扫描 VM 都应使用该消息并将其锁定,以便任何其他 VM 不会拾取。 下面附有 Azure 服务总线 SDK 的 python 代码。尽管有多个 AV 扫描虚拟机,但只有一个虚拟机应接收该消息。我们是否应该使用服务总线队列/主题。最终目标是:AV VM 应订阅服务总线 -对服务进行多次调用时,多个 VM 中的脚本会继续轮询。可用 VM 占用并完成扫描。

最新更新