是否可以将Lagom应用程序部署为独立运行的jar或Docker容器?
如果是的话,怎么办?

最佳答案

是的,可以将Lagom应用程序部署为独立的JAR / Docker容器。为此,您可以按照以下步骤。

  • 配置Cassandra联系点:如果您打算为服务使用动态服务位置,但是需要静态定位Cassandra(这在生产环境中很明显),则修改服务的application.conf。同样,禁用Lagom的ConfigSessionProvider并回退到akka-persistence-cassandra中提供的application.conf,它使用在接触点中列出的端点列表。您的Cassandra配置应该看起来像这样-
  • cassandra.default {
    ## list the contact points here
    contact-points = ["127.0.0.1"]
    ## override Lagom’s ServiceLocator-based ConfigSessionProvider
    session-provider = akka.persistence.cassandra.ConfigSessionProvider
    }
    cassandra-journal {
    contact-points = ${cassandra.default.contact-points}
    session-provider = ${cassandra.default.session-provider}
    }
    cassandra-snapshot-store {
    contact-points = ${cassandra.default.contact-points}
    session-provider = ${cassandra.default.session-provider}
    }
    lagom.persistence.read-side.cassandra {
    contact-points = ${cassandra.default.contact-points}
    session-provider = ${cassandra.default.session-provider}
    }
    
  • 提供Kafka代理设置(如果您使用的是Kafka Message Broker):如果您打算使用Lagom的流媒体服务,则下一步是提供Kafka代理设置。为此,如果要静态定位Kafka服务,则需要修改服务的application.conf,在这种情况下,您的服务只能像使用者一样工作,否则,不需要进行以下配置。
  • lagom.broker.kafka {
      service-name = ""
      brokers = "127.0.0.1:9092"
      client {
        default {
          failure-exponential-backoff {
            min = 3s
            max = 30s
            random-factor = 0.2
          }
        }
        producer = ${lagom.broker.kafka.client.default}
        producer.role = ""
        consumer {
          failure-exponential-backoff = ${lagom.broker.kafka.client.default.failure-exponential-backoff}
          offset-buffer = 100
          batching-size = 20
          batching-interval = 5 seconds
        }
      }
    }
    
  • 创建Akka集群:最后,我们需要自己创建一个Akka集群。由于我们没有使用ConductR,因此需要自己实现联接。这可以通过在java -cp中添加以下行来完成。
  • akka.cluster.seed-nodes = [
      "akka.tcp://MyService@host1:2552",
      "akka.tcp://MyService@host2:2552"]
    

    现在,我们知道需要为服务提供哪些配置,让我们看一下部署步骤。由于我们仅使用ojit_code命令,因此我们需要打包服务并运行它。为了简化该过程,我们为其创建了一个shell脚本。

    有关完整的示例,您可以参考我们的GitHub repo-Lagom Scala SBT Standalone project

    希望对您有所帮助!

    10-06 06:21