Прикрепить идентификатор корреляции к запросам Guzzle 6

Мне интересно как пройти идентификатор корреляции (или же идентификатор запросажрать 6 запросов. Я не нашел ни одного вопроса, который мог бы удовлетворить меня, поэтому я решил создать новый.

Большинство моих микро-сервисов работают на Symfony3 стек. Они общаются друг с другом через HTTP, и я использую Guzzle 6 для этого. Я хотел бы иметь уникальный идентификатор запроса генерируется в точке входа (где запускается сценарий использования — команда или запрос) и передает его в следующие запросы другим службам. Другое приложение также должно получить уже сгенерированный идентификатор запроса в связи с их зависимыми службами и добавить его в следующие запросы (и так далее …). Этот идентификатор запроса будет полезен, например, в журнале событий.

Я думаю о наиболее эффективном способе сделать это. Хотя генерировать уникальный идентификатор и встраивать его в метаданные запроса (например, в заголовки) при обработке в Symfony довольно легко, я не знаю, что делать с клиентами API. Мои мысли до сих пор:

  • Конечно, я мог бы прикрепить заголовок в каждом месте, где выполняются запросы, но он кажется немного «вонючим» и сложным в обслуживании. Более того, при создании нового метода в моем классе API-клиентов мне нужно помнить, что в запрос нужно добавить заголовок.
  • Я также собирался создать новое промежуточное программное обеспечение Guzzle, которое будет отвечать за прикрепление заголовка для меня. Но так как Symfony3 имеет другую реализацию Request чем жрать (PSR 7 здесь) Я не знаю, если это законно 🙂 Конечно, я могу использовать PSR Http Bridge Symfony для преобразования запросов, но я еще не использовал его, и я боюсь, что это может нарушить совместимость в классах, где HttpFoundation\Request вводится Однако это решение пока кажется лучшим.

Я хотел бы услышать некоторые советы от вас. Как это сделать и легко поддерживать, соблюдая принципы чистой архитектуры и чистого дизайна?

Спасибо за любой ответ.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]