#spring-cloud-contract
Вопрос:
Я пытаюсь использовать контракт Spring cloud вместе с RabbitMQ. Я использую spring с весенним AMQP. С одной стороны потребительскую сторону я называю
String result = (String) rabbitTemplate.convertSendAndReceive(
TEST_DIRECT_EXCHANGE,
TEST_DIRECT_QUEUE,
new SendAndReceiveRequest("123")
);
На стороне потребителя я использую @RabbitListener
@RabbitListener(queues = TEST_DIRECT_QUEUE)
public Message<String> rabbitListener(SendAndReceiveRequest request) {
...
MessageBuilder.withPayload("result")
...
.build();
}
Чего я пытаюсь добиться, так это создать контракт на эту связь. Я попытался создать такой контракт https://docs.spring.io/spring-cloud-contract/docs/3.0.0-SNAPSHOT/reference/htmlsingle/#contract-dsl-output-triggered-message но это не сработало
Мой контракт:
label("sendAndReceiveEvent")
input {
// the message was received from this destination
messageFrom("test.provider.sendAndReceive.exchange")
// has the following body
messageBody([
text: '123'
])
// and the following headers
messageHeaders {
header("amqp_receivedRoutingKey", "test.provider.publish.queue")
header("contentType", "application/json")
}
}
outputMessage {
sentTo('test.reply.queue')
body('123')
headers {
header("contentType", "application/json")
}
}
}
Когда я делал это, как описано выше, я складывал исключение: java.lang.IllegalStateException: no listeners found for destination test.provider.sendAndReceive.exchange
Можно ли использовать контракт spring cloud с sendAndReceive? У вас есть какой-нибудь пример этого?