akka2使用Typesafe Config库,可以使用ConfigFactory.load()加载配置文件,默认加载classpath下的application.conf, application.json and application.properties文件。ActorSystem将会把这些配置和reference.conf合并(merge)起来。

如果要写akka应用,将配置写在classpath根目录下的application.conf文件中。

如果要写基于akka的lib包,将配置写在jar包内的根目录下的reference.conf文件中.

问题:如果一个项目依赖多个基于akka的jar包,这些jar包中都有reference.conf,并且配置有冲突,它是怎么解决的呢?

可以合并config.

Returns a new value computed by merging this value with another, with keys in this value "winning" over the other one. Only ConfigObject and Config instances do anything in this method (they need to merge the fallback keys into themselves). All other values just return the original value, since they automatically override any fallback.
The semantics of merging are described in the spec for HOCON.
Note that objects do not merge "across" non-objects; if you write object.withFallback(nonObject).withFallback(otherObject), then otherObject will simply be ignored. This is an intentional part of how merging works. Both non-objects, and any object which has fallen back to a non-object, block subsequent fallbacks.

a.withFallback(b)  //a和b合并,如果有相同的key,以a为准

Clone the config with only the given path (and its children) retained; all sibling paths are removed.

a.withOnlyPath(String path)  //只取a里的path下的配置

Clone the config with the given path removed.

a.withoutPath(String path) //只取a里出path外的配置

ConfigFactory还有其他的API,用其他的方式(字符串、文件、Map、Properties、url等)加载配置文件,可以查看相应的api。

配置内容即可以是层级关系,也可以用”.”号分隔写成一行:

akka {
    host = "0.0.0.0"
    port = 9999
}
akka.host = "0.0.0.0"
akka.port = 9999

配置文件还可以在java启动参数中加载:

-Dconfig.resource=/dev.conf

也可以用include关键字引入其他的配置。比如可以把一些通用配置写在一个common.conf文件中,在自己的配置中只写个性配置,然后include “common”:

calculator {
  include "common"

akka {
    remote.netty.port = 2552
  }
}

转载于:https://blog.51cto.com/xiefeifeihu/950593

Akka2使用探索2(Con?guration)相关推荐

  1. Akka2使用探索1(Remoting)

    2019独角兽企业重金招聘Python工程师标准>>> akka从1.2升级到现在的2.0.2后有了很大的改变.现在摸索一下如何使用. Remoting可以方便地用于服务器之间通信. ...

  2. Akka2使用探索3(Duration 和 Deadline)

    2019独角兽企业重金招聘Python工程师标准>>> akka提供了两个关于时长的数据类型:Duration 和 Deadline,比如5秒钟这种含义. Duration.Inf表 ...

  3. Swin Transformer V2!MSRA原班人马提出了30亿参数版本的Swin Transformer!

    关注公众号,发现CV技术之美 [写在前面] 在本文中,作者提出了将Swin Transformer缩放到30亿个参数的技术 ,并使其能够使用高达1536×1536分辨率的图像进行训练.通过扩大容量和分 ...

  4. REINFORCEMENT LEARNING USING QUANTUM BOLTZMANN MACHINES利用量子波兹曼机进行强化学习

    REINFORCEMENT LEARNING USING QUANTUM BOLTZMANN MACHINES 利用量子波兹曼机进行强化学习 Abstract. We investigate whet ...

  5. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors

    来源:https://arxiv.org/abs/2207.02696 代码:https://github.com/WongKinYiu/yolov7 0. Abstract YOLOv7 surpa ...

  6. Agile DSL Development in Ruby 笔记

    pdf见:http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf 1. What ...

  7. 利用 libvirt 和 Linux 审计子系统跟踪 KVM 客户机

    在虚拟环境中审计和过滤客户机和主机事件 Marcelo H. Cerri, 软件工程师, IBM Marcelo Cerri 是位于巴西 IBM Linux Technology Center 的软件 ...

  8. Paper:《Hidden Technical Debt in Machine Learning Systems—机器学习系统中隐藏的技术债》翻译与解读

    Paper:<Hidden Technical Debt in Machine Learning Systems-机器学习系统中隐藏的技术债>翻译与解读 导读:机器学习系统中,隐藏多少技术 ...

  9. JVM 面试题 87 题详解

    目录 1.java中会存在内存泄漏吗,请简单描述. 2.64 位 JVM 中,int 的长度是多数? 3.Serial 与 Parallel GC 之间的不同之处? 4.32 位和 64 位的 JVM ...

最新文章

  1. SSE2 Intrinsics各函数介绍
  2. 理解Java对象:要从内存布局及底层机制说起,话说....
  3. 系统科学丨钱学森:我对系统学认识的历程
  4. 迈入幸福婚姻殿堂的星座女
  5. 图像翻译、语义分割、域适应、图像检索、无监督学习cvpr2021
  6. 小议数据库主键选取策略
  7. Windows server 2012 活动目录回收站
  8. Android 编译系统分析(三)
  9. CMake 编译 OpenCV 项目,不是编译OpenCV, 用了之后才知道CMake也太好用了。
  10. html 闪烁文本,HTML最简单的文字闪烁代码
  11. OAuth2.0授权码模式原理与实战
  12. IOS iframe宽高问题(来至stackoverflow)
  13. oracle+纵向存储,oracle横向纵向求和代码实例
  14. python excel处理模块_Python(00):openpyxl模块处理Excel文件
  15. 是时候该了解一波Protocol Buffers了[Java]
  16. 四、java多线程核心技术——synchronized同步方法与synchronized同步快
  17. HTML兼容IE版本问题
  18. 关于 sinc函数和rect函数 傅里叶变换的思考
  19. 玩转aws之(二)eks 设置efs(nfs)存储卷pvc
  20. rdkit smiles支持和扩展

热门文章

  1. activiti 视图
  2. 转:org.apache.maven.archiver.MavenArchiver.getManifest错误
  3. 54.get set
  4. reorder-list
  5. acdream 1023 xor按位思考
  6. 一个人的Scrum之准备工作
  7. 锅巴H264播放器地址和说明
  8. SetFormFullScreen()窗体全屏显示
  9. [转] STL中map用法详解
  10. 【vue报错】——listen EADDRINUSE :::8080 解决方案