需要有关使用Dockers

时间:2017-07-18 13:50:18

标签: docker deployment rabbitmq cloud camunda

首先让我解释一下我将要开发的应用程序。 我们在Camunda开发了以下一系列工作流程:

  1. 全局子流程工作流程,如fetchImageAttributes, fetchFileAttributes等......
  2. FileTransfer工作流程。
  3. FileConverter工作流程。
  4. Overview

    FileTransfer工作流使用全局子流程借助于camunda中的调用活动任务,类似地FileConverter工作流也在调用活动任务的帮助下使用子流程。 全局进程是长时间运行的进程,因此无论何时任何子进程启动它都会在特定的兔子队列中发送消息,并等待特定兔队列中的响应以使用接收任务恢复子进程。 FileTransfer工作流程& FileConverter工作流可以独立调用。我们在spring中创建了一个兔子队列列表器,它将监听各个工作流的特定队列,每当在这些队列中删除一条消息时,工作流就会被调用。

    在开发过程中,所有三个工作流程都将在单个tomcat实例中进行部署和测试,因此工作流程无需担心。

    现在计划是使用码头工人将它们托管到云端,计划是在3个docker容器中托管这三个工作流程。

    • 容器1将包含全局子流程工作流程。
    • 容器2将包含FileTransfer工作流程。
    • 容器3将包含FileConverter Workflow。

    所有三个camunda工作流程都将使用相同的数据库来存储特定的工作流程活动和变量。

    面临的挑战:

    1. 自FileTransfer Workflow& FileConverter工作流使用全局子流程使用调用活动将失败,因为它们在同一运行时引擎中不可用。我们应该使用Camunda Rest服务吗?
    2. 为了克服上述挑战,我想到了 部署计划2:

      • 容器1将包含全局子流程工作流程& FileTransfer Workflow。
      • 容器2将包含全局子流程工作流程& FileConverter工作流程。

      面临的挑战:

      1. 由于全局子流程工作流存在于两个容器中,因此可能是FileTraverter Workflow的响应可能被FileConverter工作流拉取的情况,因为全局子流程正在两个容器中侦听相同的兔子队列,因此它可能导致将找不到流程实例的错误。
      2. 所以,如果有人可以帮助我建立一个更好的架构,或者任何一个在camunda中具有良好经验并且在异构集群中部署的人可以指导我。

        感谢。

1 个答案:

答案 0 :(得分:2)

您可以推断,如何实现流程之间的通信。由于您将部署分开,因此不能选择子进程/调用活动。更好的方法是使用BPMN消息并在进程之间创建编排。如果您已经在使用Rabbit,则可以开发到Rabbit适配器的BPMN消息并传递消息。

还有另外两种连接系统的方法:

  • 使用外部服务任务
  • 使用名为zeebe
  • 的新方法