jboss - 启动捆绑 jboss fuse karaf 时如何读取外部配置文件
问题描述
问题很简单:在 karaf 上安装 kafka 模块后,我想从 apache kafka 打印所有主题。我需要从位于 jbossfuse/etc 中的 cfg 文件中获取属性并创建一个 KafkaConsumer 对象。我想实现 BundleActivator 以便能够在安装模块时启动方法。问题是:如何从配置文件中获取属性?我在这里找到了一些解决方案:一些解决方案,他们说“你可以使用 OSGi 规范中的 ConfigAdimn 服务。”。我该如何使用它?欢迎所有带有代码的示例
解决方案
Karaf 使用 Felix-FileInstall 读取配置文件:http ://felix.apache.org/documentation/subprojects/apache-felix-file-install.html 所以如果有一个名为 kafka.cfg 的文件,它会选择它并在 pid 'kafka' 下使用 ConfigAdmin-Service 注册配置。您可以获取 ConfigAdmin-Service 并使用 Activator 获取配置并从那里读取该配置,但我强烈建议使用 DeclarativeServices 或 Blueprint 来与 OSGi-Framework 交互,如果可用,两者都支持注入配置。因为否则您必须处理以下主题:
- 没有 ConfigAdmin(还没有),可能是因为你的包启动得更早)
- ConfigAdmin 更改(例如由于包刷新或更新)
- 配置尚未注册(因为 felix 尚未读取)
- 配置得到更新(例如 somone 更改文件)
推荐阅读
- python - 无法在 django 3 中使用 AbstractBaseUser 进行迁移
- javascript - 如何在 react-admin 中直接访问 dataProvider?
- android - 如何修改 SearchView 关闭/清除按钮以始终关闭搜索框,无论它是否有内容?
- javascript - 有没有办法配置 firebase.json 文件以根据屏幕大小提供不同的 html 文件?
- python - 从 Code Aurora 初始化存储库时获取“除了 ManifestInvalidRevisionError,e:”
- python - pip-tools 和/或新的解析器是否会阻止升级到破坏主要依赖项的子依赖项版本?
- filtering - 在 Azure 数据工厂的复制活动中筛选 MongoDB 源数据集
- twilio - 如何使用 Twilio Flex Webchat UI 创建响应卡
- amazon-web-services - AWS Lambda 发布 - 错误 NU1605:检测到包降级
- python - Django Rest Framework 使用 value_list 序列化 fetchedn 的查询集