Я создал пружинный шлюз dsl с каналом запроса и каналом ответа. Этот шлюз производит выход.Ошибка канала ответа, даже если она определена в шлюзе
@MessaginGateway
public interface Gateway{
@Gateway(requestChannel="reqChannel", replyChannel="replyChannel")
String sayHello(String name);
}
Я пытаюсь проверить выход в модульном тестировании. Поэтому я создал мост в моем тестовом контексте. И когда я пытаюсь получить его из мостового канала, он дает мне «отсутствие выходного канала или заголовка канала ответа».
Я создал мост, как показано ниже.
@Bean
@BridgeFrom("replyChannel")
public QueueChannel bridgeOutput(){
return MessageChannels.queue.get();
}
В моем тесте, я посылаю сообщение запроса канала reqChannel.send(MessageBuilder.withPayload("Name").build());
и я пытался получить ответ на bridgeOutput.receive(0)
. Это дает мне вышеуказанную ошибку.
Если я вызываю метод sayHello() напрямую, он работает нормально. Я просто пытаюсь протестировать шлюз, прямо вставляя сообщение в канал.
Что мне не хватает?
UPDATE:
<int-enricher request-channel="gatewayRequestChannel" >
<int-property name="name" expression="payload" />
</int-enricher>
В выше, я кладу сообщение в requestChannel и установка свойства. Вместо 'gatewayRequestChannel' можно вызвать метод java и установить возвращаемое значение?
Спасибо, еще одна проблема, с которой я столкнулся, я внедрил errorFlow из errorChannel. Поэтому я настроил setErrorChannel(), как вы уже объяснили выше. Но мой поток ошибок не получает сообщение, а исключение выбрасывается. Что может быть неправильно. – Manoj
Логика обработки ошибок встроена в шлюз; если вы обходите его в своем тесте, он не может быть вызван. Просто установить канал ошибки в сообщении недостаточно. Непонятно, что вы пытаетесь проверить здесь. Лучше всего проверить свой поток, позвонив в шлюз. –
Причина, по которой я хочу сделать этот путь, - это такие места, как обогащение, мы можем предоставить канал запроса этого шлюза и получить ответ и установить свойство. Есть ли другой способ вызвать шлюз непосредственно из обогатителя вместо использования активатора службы? – Manoj