首页 > 解决方案 > 如何根据消息值触发不同的模板?

问题描述

我有两个工作流模板(T1,T2),它们应该由 PubSub 消息触发。到目前为止 - 这行得通。但现在我想根据随消息发送的值触发 T1 xor T2。出于某种原因,我只是不让这个工作。这是我的事件源和传感器:

    apiVersion: argoproj.io/v1alpha1
    kind: EventSource
    metadata:
      name: pubsub-event-source-nyc
    spec:
      template:
        serviceAccountName: argo-events
      pubSub:
        examplex:
          jsonBody: true
          topic: argo-events-nyc
          subscriptionID: argo-events-nyc-sub
    
    ---
    
    apiVersion: argoproj.io/v1alpha1
    kind: Sensor
    metadata:
      name: pubsub-sensor-nyc
    spec:
      template:
        serviceAccountName: argo-events-sa
      dependencies:
        - name: pubsub-event-source-dep-a
          eventSourceName: pubsub-event-source-nyc
          eventName: examplex
          filters:
            data:
              - path: body.test
                type: string
                value:
                  - "a"
        - name: pubsub-event-source-dep-b
          eventSourceName: pubsub-event-source-nyc
          eventName: examplex
          filters:
            data:
              - path: body.test
                type: string
                value:
                  - "b"
      triggers:
        - template: #T1
            conditions: "pubsub-event-source-dep-a"
            name: argo-workflow-trigger-wnf59w3zv
            argoWorkflow:
              group: argoproj.io
              version: v1alpha1
              resource: workflows
              operation: submit
              source:
                resource:
                  apiVersion: argoproj.io/v1alpha1
                  kind: Workflow
                  metadata:
                    generateName: nyc-test-template-a-
                    namespace: argo
                  spec:
                    workflowTemplateRef:
                      name: nyc-test-template
        - template: #T2
            conditions: "pubsub-event-source-dep-b"
            name: argo-workflow-trigger-gtdz4ef
            argoWorkflow:
              group: argoproj.io
              version: v1alpha1
              resource: workflows
              operation: submit
              source:
                resource:
                  apiVersion: argoproj.io/v1alpha1
                  kind: Workflow
                  metadata:
                    generateName: nyc-test-template-b-
                    namespace: argo
                  spec:
                    workflowTemplateRef:
                      name: nyc-test-template

如果 body.test = "a" 第一个触发器 (T1) 应该被激活,如果 body.test = "b" 第二个 (T2)。

现在,发生的事情是这样的:

有任何想法吗?

标签: argoprojargo-events

解决方案


推荐阅读