我目前的情况:
我目前有一个Mule ESB应用程序,它有三个流来处理来自两个不同源的消息,这三个流使用VM队列连接在一起.
流程#1:
入站(端点#1) - >(执行消息处理和转换) - >出站(端点#3)
流程#2:
入站(端点#2) - >(执行消息处理和转换) - >出站(端点#3)
流程#3
入站(端点#3) - >(执行消息处理和转换,执行操作) - >出站
问题/问题:
现在我要做的是引入第四个流程,Flow#4,它从入站端点获取状态信息,并根据此信息能够防止流#3被执行/阻止它处理其入站消息.
换句话说,我理想的是让Flow#4在ESB应用程序启动时运行(就像所有流程似乎自动执行),并基于它从入站消息获取的状态信息,阻止/允许或启用/禁用流程#3处理来自端点#3的消息.
以下是我理想的要求:
要求:
完成我想做的最好的方法是什么?
如果没有真正好的解决方案,那么如果我必须省略#3要求,那么实现这样一个全局变量的最佳方法是什么,这个变量在两个独立的流之间共享,这些流不是由一些出站 - >入站端点连接在一起的XML配置?我已尝试使用会话属性,但它们要求将流绑定在一起作为子流或端点.
谢谢.
使用全局属性和一些MEL表达式来实现这一点:
<global-property name="gate_open" value="true" />
<flow name="gated-flow">
<vm:inbound-endpoint path="gated.in" />
<expression-filter expression="#[app.registry.gate_open]" />
...
</flow>
<flow name="gate-controller">
<vm:inbound-endpoint path="gate.in" />
<expression-component>
app.registry.gate_open = false
</expression-component>
</flow>
Run Code Online (Sandbox Code Playgroud)
发送任何消息vm://gate.in将关闭门gated-flow并将停止处理它收到的消息.
您可以使用任何所需的协议而不是VM.
| 归档时间: |
|
| 查看次数: |
4748 次 |
| 最近记录: |