2017-09-22 107 views
0

我有一个关于服务总线队列机制的问题。我必须设置docker容器来运行不同的python脚本。每个脚本执行一个特定的图像分析过程。其中一些是聚集的。 现在我问题是:具有优先级的Azure服务总线队列AND处理Docker容器以处理队列消息

1)Python脚本必须读取队列中的消息。如果2个容器试图从同一队列中拉取消息,应该没有冲突。 有没有任何指导,我可以按照最佳实践设置这样的场景? 我还不确定如何将这些单独的脚本集群到一个映像上,但我正在使用.yml撰写文件来处理这个集群。

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

希望这是明确的。有人可以指导我吗?提前致谢。

+0

我会开始看着pypi上的azure模块提供的api。您的所有工作容器都将在队列中侦听要处理的工作消息。我会编写处理这些消息的代码,根据消息的格式完成某些事情。因为看起来工人可以完成不同的任务。这将使您能够为您的所有工作容器拥有相同的图像。 – Kyle

+0

@凯尔谢谢你的回答。但事情是我正在考虑为进程设置不同的队列,但每个进程都会有例如2个码头工人在同一队列中进行监听。你可以对这个API有一点特别的,我没有找到更多的细节。我很抱歉,我还有2个问题。你有什么建议优先?通常我们把CMD放在dockerfile的最后运行.py如果我在同一图像下有更多的.py,我想在启动每个不同的docker容器时运行一个特定的脚本。任何建议? – sss

回答

0

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

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

希望它有帮助。