想象一下,您在wso2 esb序列中使用的参数在开发中具有与生产环境中不同的值。 我用它来管理使用chef,puppet或ansible管理的文件系统配置文件。 在WSO2中,我认为我无法使用注册表来存储依赖于环境的值,因为信息存储在数据库中,而我无法管理注册表配置。 在WSO2 ESB中如何使用它来解决这种情况?
提前致谢
答案 0 :(得分:0)
解决此问题的一种方法是使用系统变量。您可以从ESB中介流中的proxy / sequences / api配置中的脚本介体访问系统变量。
<script language="js">mc.setProperty("file.separator",java.lang.System.getProperty("file.separator"));</script>
<log level="custom">
<property name="file.separator" expression="get-property('file.separator')"/>
</log>
这里&#34; file.separator&#34;从系统属性中读取并设置为消息上下文。然后您可以在其他后续调解器中使用它。
您可以在服务器启动时给出系统属性,如下所示
-Dsystem.property.name=system.property.value
您可以将这些文件放在wso2server.sh文件中,或者在启动服务器时将它们作为命令行参数提供。
答案 1 :(得分:0)
我也对此感兴趣,我用ansible管理了一种黑客攻击。我有一个包含一些变量的“默认”注册表项目。我使用ansible来提取它并将变量替换为每个环境的实际值。这很棘手,但如果你没有太多变数就可以工作。
- name: "Extract Regitry project to temp folder"
unarchive:
src: "/tmp/{{ registry.name }}_{{ registry.version }}.car"
dest: "/tmp/{{ registry.name }}_{{ registry.version }}"
remote_src: yes
- name: "Set Sample Host"
copy:
content: "sample.api.url"
dest: "/tmp/{{ registry.name }}_{{ registry.version }}/sample_host_{{ registry.version }}/resources/sample_host"
no_log: true
- name: "Set Sample Password"
copy:
content: "{{ wso2.api.pwd }}"
dest: "/tmp/{{ registry.name }}_{{ registry.version }}/sample_api_pwd_{{ registry.version }}/resources/sample_api_pwd"
no_log: true
- name: "Package registry project"
archive:
path:
- "/tmp/{{ registry.name }}_{{ registry.version }}/*"
- "/tmp/{{ registry.name }}_{{ registry.version }}/*.xml"
dest: "{{ wso2ei_path }}/repository/deployment/server/carbonapps/{{ registry.name }}.car"
format: zip
owner: "{{ wso2_user }}"
如果你有更好的方法,我也想适应:)
答案 2 :(得分:0)
based on my experience I would recommend integrate Consul (https://www.consul.io/) with WSO2 ESB. Consul allows registration, configuration and discovery services in infrastructures. Basically WSO2 ESB can consume the REST apis Consul to obtain endpoints.