IIB - 为不同环境设置HTTP请求基本URL的正确/标准方法

时间:2016-09-16 18:49:44

标签: soa esb

我们正在尝试使用SOA实现我们的产品,并且目前正在使用IBM Integration Bus v9作为我们的ESB。

我们在3个不同的环境(用于不同目的的服务器集)上部署了我们的产品:

  • 开发:在测试和开发过程中使用
  • 客户测试:在进入主要版本之前,为客户的批准提供更稳定的构建
  • main / production:这是最后一件事。

我们遇到的挑战:为不同的环境设置消息流的HTTP节点的基本URL;不妥协DRY原则!

似乎只能使用 mqsiapplybaroverride 命令在HTTP Request节点中一次设置整个URL。问题是可以从单个服务器公开多个资源,因此具有公共基本URL。

使用 UDP 似乎是一种很有前景的方法。我们可以在UDP中为每个服务设置基本URL,并在使用UDP的HTTP Request节点之前的计算节点中构建HTTP请求URL。那么UDP可以用 mqsiapplybaroverride 覆盖...问题?似乎UDP不具有多个消息流的范围......因此,无论何时我想从服务器调用资源,我都必须为该消息流定义UDP或者BAR覆盖赢得&#39 ; t影响该消息流的基本URL ...这将导致在每个消息流中重复基本URL ... DRY适用。

这应该是典型SOA应用程序中的常见问题......那么有没有更好的方法来解决它?在典型的Java EE容器中有类似JNDI的功能吗?

IIB v10.0.0.6似乎引入了一个RestRequest节点,该节点提供了基本URL设置功能......不幸的是,我们暂时没有这种奢侈品。

2 个答案:

答案 0 :(得分:2)

您可以使用用户定义的可配置服务来实现此目的。

您可以使用java计算节点或使用映射节点和自定义java从可配置服务中读取和设置URL。

答案 1 :(得分:0)

一个好的解决方案是在数据库中为每个环境设置 baseUrl 并设置如下值:

SET OutputLocalEnvironment.Destination.REST.Request.BaseURL = GetCachedOrFromDB('custom_service_baseUrl');

GetCachedOrFromDB -> 定义从缓存或数据库中获取值的函数(如果不在缓存中) 'custom_service_baseUrl' -> 将属性定义为每个环境的设置表中的键。