В Finchley, по крайней мере для поддержки Spring Cloud Stream, мы конвертируем тело в байты из всего, что вы там передаете.Если вам не нравятся настройки по умолчанию, вы можете внедрить собственный интерфейс org.springframework.cloud.contract.verifier.messaging.MessageVerifier
, чтобы сообщить нам, как отправлять и получать сообщения.Это должно работать без проблем для стороны производителя.К сожалению, со стороны потребителя возникнут проблемы: |
Проблема в том, что в настоящее время, когда у вас есть регистр ввода / вывода, мы пытаемся использовать тело напрямую, так как оно соответствует вашему входящему сообщению с тем, что вы 'определено в контракте через JSON Paths.Таким образом, двоичный протокол здесь потерпит неудачу (проверьте класс org.springframework.cloud.contract.stubrunner.messaging.stream.StubRunnerStreamMessageSelector
).Другая проблема, которую я вижу, это org.springframework.cloud.contract.stubrunner.messaging.stream.StubRunnerStreamTransformer
, так что преобразователь, который мы используем для запуска сообщения.Предполагается, что тело представляет собой String JSON, а затем преобразует его в байты.
Таким образом, краткий ответ заключается в том, что в настоящее время он не поддерживается должным образом.ОДНАКО, благодаря подключаемому характеру Spring Cloud Contract, вы можете полностью отменить это поведение.Вы можете отключить поддержку потока по умолчанию через свойство stubrunner.stream.enabled=false
, скопировать содержимое пакета org.springframework.cloud.contract.stubrunner.messaging.stream
, изменить его в соответствии со своими потребностями и зарегистрировать компоненты.Я знаю, что это не тот ответ, на который вы надеялись, но я создал проблему (https://github.com/spring-cloud/spring-cloud-contract/issues/664), чтобы мы не забыли об этом в будущих выпусках.