надеюсь, что это последний вопрос, который я задаю на интеграцию с весной.Весенний интеграционный поток: выполнить задачу в потоке
Столкнувшись следующая проблема: в конце довольно длинного IntegrationFlow Dsl листа есть код:
return IntegrationFlows.
//...
.enrichHeaders(headerEnricherSpec -> headerEnricherSpec.header("jms_replyTo", responseQueue(), true)) // IntegrationMessageHeaderAccessor.CORRELATION_ID is not acceptable though message came from outgoingGateway of another application with this header been set
.handle(requestRepository::save)
.handle(
Jms.outboundAdapter(queueConnectionFactory()).destination(serverQueue())
)
.get();
Проблема заключается в том, что после некоторого кода, как обработчики requestRepository::save
цепь становится неработающей. Этот трюк работает только в том случае, если в качестве параметра обработчика принят шлюз.
Как я могу преодолеть это ограничение? Я думаю, что использование wireTap здесь не будет заключать сделку, потому что это асинхронно. Здесь, на самом деле, я сохраняю сообщение для хранения его заголовка jms_replyTo
и заменяю его сохраненным после того, как соответствующий ответ возвращается с сервера (шаблон интеграции с корпоративной Smart Proxy).
Любые предложения, пожалуйста?
Правильно, запрос 'save' метода repo возвращает ничего. У меня нет кода прямо сейчас на моих глазах, но он просто сохраняет сообщение в db и метод, объявленный как 'void'. (Нет, я говорю последнее, потому что у меня такое чувство, о котором я часто прошу.) Спасибо за совет, постараюсь вернуть значение. –
:-). Нет проблем для просить! Я не чувствую себя хорошо во многих других вещах, поэтому я тоже вынужден спросить. С другой стороны, моя работа - отвечать на подобные вопросы и помогать людям понять и использовать Framework. С другой стороны, такая обратная связь, как ваша, поможет нам улучшить структуру. На данный момент похоже, что документация или JavaDocs не понятны, и эта цепочка вызовов должна быть лучше объяснена. –
Точно, Артем. Это то, что я только хотел заметить. Spring framework - это шедевр, и его документация всегда была очень приятной и полезной. Но интеграция с весной кажется более сложным, чем другие. Документация показывает каждый аспект отдельно, но трудно понять, как объединить все части вместе. Мои коллеги мнения те же. Был бы очень рад, если вы немного улучшите документацию, чтобы описать, как организовать потоки. (Еще один вопрос - есть ли какие-либо схемы интеграции, которые вы собираетесь реализовать в будущем в этом модуле?) Спасибо. –