Конфигурация обработки ошибок MassTransit

используйте

ob_start ();

blockquote>

в самой верхней части вашего скрипта и

ob_end_flush ( );

blockquote>

внизу вашего скрипта. Этот wil включит буферизацию вывода и ваши заголовки будут созданы после того, как страница будет bufferd.

ОБЩИЕ ПРОБЛЕМЫ:

=============== =====

(скопированный ответ из: source )

1) не должно быть никакого выхода (т.е. echo.. или HTML-коды) перед командой header(.......);.

2) удалите любое белое пространство (или новую строку) до и после ?> тегов.

3) ЗОЛОТОЕ ПРАВИЛО! - проверьте, поддерживает ли этот файл php (а также, если вы include другие файлы) UTF8 без кодировки спецификации (а не только UTF-8). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале файла php, которое ваш текстовый редактор не показывает) !!!!!!!!!!!

4) После header(...); вы должны использовать exit;

5) всегда используйте ссылку 301 или 302:

header("location: http://example.com",  true,  301 );  exit;

6) Включить ошибку составление отчетов. И сообщать об ошибке.

7) Если ни одно из вышеизложенных не помогает, используйте перенаправление JAVSCRIPT (однако, сильно не рекомендуемый метод), может быть последним шансом в пользовательских случаях ...:

echo ""; exit;

0
задан Jaume 13 July 2018 в 12:04
поделиться

1 ответ

Чтобы ответить на ваш вопрос, который имеет несколько частей, сначала:

Принимаемые конечные точки MassTransit пересылают сообщение в очередь _error, когда потребитель генерирует исключение. Создание конечной точки приема в очереди _error не предлагается и не должно выполняться.

Если вы просто хотите наблюдать, произошла ли ошибка у потребителя, вы можете создать отдельную конечную точку приема (например, в качестве очереди ошибок ) и зарегистрировать пользователя Fault<T>. MassTransit опубликует сообщение, которое реализует Fault<T>, которое брокер направит к вашему потребителю через конечную точку приема.

Однако, в зависимости от вашего примера выше, вы отправляете запрос и ожидаете, что клиент знать, произошла ли ошибка. Для этого я бы рекомендовал использовать клиент запросов, который настраивает заголовки сообщений, чтобы возвращать ошибки обратно отправителю запроса. Он также позволяет отправлять ответы. Если вы не хотите ждать ответа или ждать, чтобы увидеть, произошла ли ошибка, вышеупомянутый наблюдатель сбоев - ваш лучший вариант.

Вы можете посмотреть, как использовать клиент запроса здесь: http://masstransit-project.com/MassTransit/usage/request-response.html

Существует также более новый синтаксис с более гибким клиентом запроса, который вы можете видеть через модульные тесты: https://github.com/MassTransit/MassTransit/blob/develop/src/MassTransit.Futures.Tests/Request_Specs.cs#L42

1
ответ дан Chris Patterson 17 August 2018 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: