wso2中的环境相关值esb最佳选项

时间:2017-10-28 06:14:40

标签: wso2esb

想象一下,您在wso2 esb序列中使用的参数在开发中具有与生产环境中不同的值。     我用它来管理使用chef,puppet或ansible管理的文件系统配置文件。     在WSO2中,我认为我无法使用注册表来存储依赖于环境的值,因为信息存储在数据库中,而我无法管理注册表配置。     在WSO2 ESB中如何使用它来解决这种情况?

提前致谢

3 个答案:

答案 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.