【问题标题】:Azure Service Bus queue with priority AND Handling docker containers to process the queue messages具有优先级和处理 docker 容器以处理队列消息的 Azure 服务总线队列
【发布时间】:2018-03-04 04:04:36
【问题描述】:

我有一个关于服务总线队列机制的问题。我必须设置 docker 容器来运行不同的 python 脚本。每个脚本执行一个特定的图像分析过程。其中一些是集群的。 现在我的问题是:

1) Python 脚本必须从队列中读取消息。如果 2 个容器尝试从同一个队列中提取消息,则应该没有冲突。 是否有任何指南可供我遵循设置此类场景的最佳实践? 我仍然不确定如何将这个单独的脚本聚集在一个图像上,但我正在使用 .yml 撰写文件处理这个集群。

2) 除此之外必须有一个优先队列。我的消息必须优先设置在 C# 代码中,我的 python 需要处理这些消息。而且我需要一个复杂的逻辑来限制相同优先级的消息,即使出现高优先级请求的高峰,其他消息也有机会得到处理。

希望这很清楚。有人可以指导我吗?提前致谢。

【问题讨论】:

  • 我将开始查看 pypi 上的 azure 模块提供的 api。您的所有工作容器都将在队列中侦听要处理的工作消息。我会编写处理这些消息的代码,以根据消息的格式执行某些操作。因为看起来工人可以做不同的任务。这将使您能够为所有工作容器使用相同的映像。
  • @Kyle 感谢您的回答。但问题是我正在考虑为进程设置不同的队列,但每个进程仍然会有例如 2 个 docker worker 来监听它们的同一个队列。你能对这个api有点具体吗?我没有找到更多细节。很抱歉,我还有 2 个问题。您对优先级有什么建议吗?通常我们将 CMD 放在 dockerfile 的末尾运行 .py 如果我在同一个图像下有更多的 .py 并且我希望在启动每个不同的 docker 容器时运行一个特定的脚本。有什么建议吗?

标签: c# python azure azure-servicebus-queues


【解决方案1】:

根据我的理解和经验,对于您的方案,我认为最佳做法是仅对这些具有优先级属性的消息使用服务总线队列,并创建一个应用程序来接收这些消息,以将相关任务添加到不同的在 Azure Batch Service 上处理优先级 Python 作业,不使用不同的优先级队列并在 Docker 容器上处理 Python 作业。

可以参考 Azure Batch Service for Python 的官方document 了解,批处理作业具有优先级属性以满足您的需求(请在here 中搜索关键字priority)。

希望对你有帮助。

【讨论】:

  • 链接不再可用。
  • @inquisitive 已更新。谢谢。
猜你喜欢
  • 2017-11-01
  • 2020-01-31
  • 2019-07-23
  • 2015-12-23
  • 2020-07-08
  • 2014-02-08
  • 2019-01-30
  • 2018-06-10
相关资源
最近更新 更多