EventGrid Trigger - Как установить clienttrackingid из триггера? - PullRequest
0 голосов
/ 01 июля 2019

В микросервисной среде, где запросы охватывают несколько сервисов, включая EventGrid, я бы хотел настроить сквозную регистрацию с помощью correlationid.Вдохновленный этим блогом https://toonvanhoutte.wordpress.com/2018/08/05/end-to-end-correlation-across-logic-apps/

Как я могу настроить триггеры EventGrid clientTrackingId с моим корреляционным значением из полезной нагрузки данных событий?

Ознакомьтесь с приведенным ниже определением, которое не работает.Если я заменю "@ {coalesce (json (triggerBody (). Data)?. CorrelationNr, guid ())}" строковым значением или даже "@parameters ('$ connections') ['azureeventgrid'] ['connectionId'] "работает как шарм.

"triggers": {
            "When_a_resource_event_occurs": {
                "correlation": {
                    "clientTrackingId": "@{coalesce(json(triggerBody().Data)?.CorrelationNr, guid())}"
                },
                "inputs": {
                    "body": {
                        "properties": {
                            "destination": {
                                "endpointType": "webhook",
                                "properties": {
                                    "endpointUrl": "@{listCallbackUrl()}"
                                }
                            },
                            "filter": {
                                "includedEventTypes": [
                                    "webhook.sp.updated"
                                ]
                            },
                            "topic": "/subscriptions/xxxx/resourceGroups/xxx/providers/Microsoft.EventGrid/topics/WebHookManager"
                        }
                    },
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azureeventgrid']['connectionId']"
                        }
                    },
                    "path": "/subscriptions/@{encodeURIComponent('xxx')}/providers/@{encodeURIComponent('Microsoft.EventGrid.Topics')}/resource/eventSubscriptions",
                    "queries": {
                        "x-ms-api-version": "2017-06-15-preview"
                    }
                },
                "splitOn": "@triggerBody()",
                "type": "ApiConnectionWebhook"
            }
        }

Приложение логики не срабатывает.Нет сообщения об ошибке.

1 Ответ

1 голос
/ 02 июля 2019

Пожалуйста, проверьте описание clientTrackingId , и у вашего логического приложения нет истории запусков, потому что у вашего triggerBody() нет CorrelationNr с отображаемым вами определением.

На самом деле вашТриггер Event Grid обнаружил событие, он просто не может работать с логикой.Вы можете перейти к EVALUATION и проверить историю триггеров.Это потому, что значение равно нулю, тогда оно не запустится.

enter image description here

Если вы используете триггер HTTP-запроса, вы можете установить заголовок x-my-custom-correlation-id,или установите любое значение ключа в теле json, затем установите clientTrackingId с помощью @{coalesce(json(triggerBody())['keyname'], guid())}.

. И если вы используете какой-либо триггер без заголовка, вы должны указать значение с помощью строки или другого параметра.как вы сказали, ConnectionID или значение параметра, которое вы настраиваете, как показано ниже.

enter image description here

enter image description here

Таким образом, точка должна быть установлена ​​clientTrackingId, прежде чем она запустится, и значение может быть получено.

...