将 Lagom Framework 部署为独立的 jar/docker



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

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

配置 Cassandra
  1. 联系点:如果您计划对服务使用动态服务位置,但需要静态定位Cassandra(这在生产中很明显),请修改服务application.conf。此外,禁用 Lagolm 的ConfigSessionProvider并回退到akka-persistence-cassandra中提供的,该使用联系点中列出的端点列表。你的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
  1. 消息代理):如果您计划使用 Lagom 的流媒体服务,下一步是提供 Kafka 代理设置。为此,你需要修改服务的 application.conf,如果 Kafka 服务是静态定位的,当你的服务只像消费者一样运行时就是这种情况,否则,你不需要给出以下配置。
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
}
}
}
  1. 创建 Akka 集群:最后,我们需要自己创建一个Akka 集群。由于我们没有使用ConductR,我们需要自己实现加入。这可以通过在application.conf中添加以下行来完成。
akka.cluster.seed-nodes = [
"akka.tcp://MyService@host1:2552",
"akka.tcp://MyService@host2:2552"]

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

有关完整的示例,您可以参考我们的GitHub存储库 - Lagom Scala SBT Independent项目。

我希望它有所帮助!

最新更新