首页 > 解决方案 > 如何在 Oozie 中全局配置此电子邮件操作?

问题描述

我有大约 50 个这样的工作流程,下面的代码只是一个示例,

<workflow-app name="exit_1_email_test" xmlns="uri:oozie:workflow:0.5">
    <start to="ssh-8e73"/>
    <action name="Kill">
        <email xmlns="uri:oozie:email-action:0.2">
            <to>***</to>
            <cc>***</cc>
            <subject>exit1_email_test workflow failed</subject>
            <body>exit1_email_test workflow failed on</body>
        </email>
        <ok to="Kill-kill"/>
        <error to="Kill-kill"/>
    </action>
    <kill name="Kill-kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <action name="ssh-8e73">
        <ssh xmlns="uri:oozie:ssh-action:0.1">
            <host>ubuntu@ip-address.ec2.internal</host>
            <command>bash /home/ubuntu/exit_1.sh</command>
            <capture-output/>
        </ssh>
        <ok to="End"/>
        <error to="Kill"/>
    </action>
    <end name="End"/>
</workflow-app>

我正在为工作流配置电子邮件操作,以便在出现任何故障时接收通知。

除了工作流名称外,电子邮件操作中的参数基本相同。

如何在 Oozie 中全局配置此电子邮件操作,而不是在每个工作流程中配置相同?

标签: apache-sparkemailoozieoozie-coordinatoroozie-workflow

解决方案


一种选择是将配置的电子邮件操作放在单独的工作流中,并将其作为 50 个工作流中的每个工作流中的子工作流执行:

子工作流操作

...
    <action name="send-email">
        <sub-workflow>
            <app-path>[PATH-TO-EMAIL-WORKFLOW-FILE]</app-path>
            <propagate-configuration/>
            <configuration>
                <property>
                    <name>[WF-NAME-OR-OTHER-PROPERTY-NAME]</name>
                    <value>[PROPERTY-VALUE]</value>
                </property>
                ...
            </configuration>
        </sub-workflow>
        <ok to="End"/>
        <error to="Kill"/>
    </action>
 ...

推荐阅读