wso2 - 处理程序和序列

时间:2016-02-24 03:31:07

标签: wso2 wso2-am

对于WSO2 api管理器,处理程序和序列之间的区别或关系是什么。

我想为每个api提供一些条件。根据条件,它将检查api请求是否已通过该条件。如果我需要使用序列或处理程序,我不确定。

1 个答案:

答案 0 :(得分:5)

这个答案假定通过" sequence"用户意味着调解序列,"它们是通过APIManagerExtensionHandler处理程序运行的(中介可以是全局的,也可以是每个API,但据我所知,它在同一个地方执行)。

中介序列和处理程序都是在网关收到响应或请求后运行的代码扩展。处理程序扩展org.apache.synapse.rest.AbstractHandler类,需要实现AbstractHandler.handleRequestAbstractHandler.handleResponse;调解员扩展org.apache.synapse.mediators.AbstractMediator类并要求实施AbstractMediator.mediate

自定义处理程序和中介序列之间的主要区别在于,使用自定义处理程序需要您编写自己的Java类,然后打包并部署处理程序。如果使用预定义的调解器(由WSO2和ESB提供)组合满足您的要求,那么您可以编写XML序列来定义调解任务,而无需新代码。

根据我的经验,这里是处理程序和中介序列之间的主要区别。使用一个在另一个上面应根据您的具体要求确定。

<强>处理程序

  • 严格遵守&#34; per-API,&#34;虽然可以通过包含在velocity-template.xml文件中将它们添加到每个API中。
  • 可以相对于其他处理程序以任何顺序执行。
  • 除了在API定义序列中包含处理程序之外,不需要序列。所有任务都必须包含在Java代码中。

调解序列

  • 可以配置为全局或API特定。
  • 可以按照其他调解序列的任何顺序执行,但不能在其他处理程序之前进行调解,除非所有其他调解员也这样做(除非您编写自定义调解)处理程序)。
  • 允许您在XML树中调用其他预定义的调解器来描述调解任务。除非预定义的调解员(由WSO2&#39; ESB提供)不满足您的要求,否则您不必编写任何自定义代码。

简而言之:如果现有调解员的某些组合将实现您的目标,使用调解序列最有意义(即使它是&#34;关闭,但不完全,#34;写一个自定义中介可以比创建一个全新的处理程序更容易。如果您需要更高级别的自定义或要求在所有其他中介执行之前或之后进行调解,则应考虑编写处理程序。

编辑:实际回答具体问题:您可以非常轻松地使用中介序列对请求标头中的值进行逻辑检查。如果你需要阅读正文内容,这些检查会变得有点困难......在这种情况下,自定义处理程序基本上是你唯一的选择。