小编Mik*_*eek的帖子

骡子3:控制是否允许执行流程

我目前的情况:

我目前有一个Mule ESB应用程序,它有三个流来处理来自两个不同源的消息,这三个流使用VM队列连接在一起.

流程#1:

入站(端点#1) - >(执行消息处理和转换) - >出站(端点#3)

流程#2:

入站(端点#2) - >(执行消息处理和转换) - >出站(端点#3)

流程#3

入站(端点#3) - >(执行消息处理和转换,执行操作) - >出站

问题/问题:

现在我要做的是引入第四个流程,Flow#4,它从入站端点获取状态信息,并根据此信息能够防止流#3被执行/阻止它处理其入站消息.

换句话说,我理想的是让Flow#4在ESB应用程序启动时运行(就像所有流程似乎自动执行),并基于它从入站消息获取的状态信息,阻止/允许或启用/禁用流程#3处理来自端点#3的消息.

以下是我理想的要求:

要求:

  1. 必须能够完全通过mule flow XML完成,没有额外的POJO /自定义Java对象.
  2. 必须在启动ESB应用程序时执行流#4,并且只需要处理第一个入站消息.
  3. 理想情况下,我不希望Flow#3具有复合入站源,或者必须评估每个入站消息中某个全局变量的状态.

完成我想做的最好的方法是什么?

如果没有真正好的解决方案,那么如果我必须省略#3要求,那么实现这样一个全局变量的最佳方法是什么,这个变量在两个独立的流之间共享,这些流不是由一些出站 - >入站端点连接在一起的XML配置?我已尝试使用会话属性,但它们要求将流绑定在一起作为子流或端点.

谢谢.

esb mule

5
推荐指数
1
解决办法
4748
查看次数

合并两个 bash 历史文件

假设我有两个 bash 历史文件,如下所示:

历史1.txt

    1  ls
    2  cd foo
...
  921  history > history1.txt
Run Code Online (Sandbox Code Playgroud)

历史2.txt

  154  vim /etc/nginx/nginx.conf
  155  service nginx restart
...
 1153  history > history2.txt
Run Code Online (Sandbox Code Playgroud)

我知道我可以轻松编写一个 bash 脚本来将这两个文件合并在一起,以便生成的文件包含第 1 行到 1153 行,而没有重复的历史记录条目...就像以下 bash 脚本一样:

合并.sh

HEAD=`head -n 1 history2.txt | sed -e 's/^[[:space:]]*//'`
sed -n -e "1,/$HEAD/p" history1.txt > merged.txt
sed -e "1,$ s/$HEAD//" -e '/^\s*$/d' history2.txt >> merged.txt
Run Code Online (Sandbox Code Playgroud)

但我花了比我愿意承认的更多的时间来尝试找到一种仅使用未命名管道、sed 和/或任何其他常见 Linux 实用程序而不使用变量和命令替换(“command”)来完成此操作的方法。我没有取得任何成功:(

任何 Linux shell 专家或 sed 大师都知道这是否可能吗?

注意:我知道 merge.sh 脚本不适用于所有边缘情况。

unix linux bash sed

5
推荐指数
1
解决办法
3660
查看次数

标签 统计

bash ×1

esb ×1

linux ×1

mule ×1

sed ×1

unix ×1