Если это ошибка уровня приложения, которую издатель может и должен обработать, то я думаю, что она должна быть инкапсулирована на уровне RPC, а не на транспортном уровне.То есть это должна быть часть отправляемых вами данных, а не какой-либо статус в RabbitMQ.
Под этим я подразумеваю, что если ответ потребителя в настоящее время выглядит следующим образом:
{"answer": 42, "years": 7500000}
Вы можете изменить его, чтобы указать успешность:
{"success": true, "result": {"answer": 42, "years": 7500000}}
Затем вы можете вместо этого вернуть сообщение, указывающее на ошибку:
{"success": false, "error": "Unable to reticulate splines"}
Тогда дело за кодом в издателе«развернуть» эту ошибку и обработать ее соответствующим образом.
Это делает весь механизм независимым от того, как работает RPC - вы можете заменить RabbitMQ на ZeroMQ или HTTP API и т. д. и использовать тот же формат ответа дляобрабатывать ошибки.