我找到了很多关于如何设置使用API Manager将策略应用于代理的顺序的文档,但没有关于如何在仅使用API网关独立时更改它的文档。有什么想法吗?
答案 0 :(得分:1)
有一种更确定的方法可以确定应用哪种订单策略,而不是取决于文件系统上文件的顺序。
如果您使用在线策略(即在API Manager端定义的策略),则必须在那里定义订单。如果重命名在线策略,它将在下一个轮询周期中被运行时删除。
如果您正在使用脱机策略(即未在API Manager端定义的策略,并且您必须手动部署到policies文件夹),那么您可以通过定义<来定义应用它们的顺序。 策略标记中的em> order 属性。例如:
<?xml version="1.0" encoding="UTF-8"?>
<policy
xmlns="http://www.mulesoft.org/schema/mule/policy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mule="http://www.mulesoft.org/schema/mule/core"
xmlns:api-platform-gw="http://www.mulesoft.org/schema/mule/api-platform-gw"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/policy http://www.mulesoft.org/schema/mule/policy/current/mule-policy.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/api-platform-gw http://www.mulesoft.org/schema/mule/api-platform-gw/current/mule-api-platform-gw.xsd"
online="false"
id="12345"
policyName="SimpleLogger"
order="100">
<before>
<mule:logger level="INFO" message="A message" />
</before>
<pointcut>
<api-platform-gw:api-pointcut apiName="your API name" apiVersion="your API version Name"/>
</pointcut>
</policy>
考虑到即使您定义了订单,CORS和Throttling / RateLimit策略也始终始终,无论这些策略或其他策略中指定的顺序如何。
如果两个或多个策略具有相同的顺序,则运行时将决定在应用定义了较低订单号的所有策略后应用的顺序。
在应用了指定顺序的所有策略之后,将应用未指定订单的策略。
祝你好运, 纳乌艾尔乌。
答案 1 :(得分:0)
我能够更改重构策略文件名称的策略顺序,并添加一个数字作为前缀。该号码将用于设置订单。
实施例
public class clsPais {
private long id = 0;
private String nombre = "";
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Override
public String toString() {
return nombre;
}
}
这些政策将按照
的顺序执行clsPais p1 = new clsPais();
p1.setId(1);
p1.setNombre("ARGENTINA");
clsPais p2 = new clsPais();
p2.setId(2);
p2.setNombre("BRASIL");
cmbPaises.removeAllItems();
cmbPaises.addItem(p1);