2017-01-27 2 views
1

Просто найдите информацию, если другие решили этот шаблон. Я хочу использовать Spring Integration и Spring Batch вместе. Оба из них - приложения SpringBoot, и в идеале я хотел бы оставить их и их соответствующую конфигурацию разделенными, поэтому они оба являются их собственной исполняемой банкой. У меня возникают проблемы с их исполнением в собственном пространстве процессов, и я считаю, что хочу, если кто-то не убедит меня в противном случае, каждый из них запускается, как будто это собственное приложение Spring Boot и инициализирует себя своими собственными профилями и свойствами. У меня возникают проблемы с вызовом работы в моем проекте SpringBatch из моего проекта SpringIntegration. Сначала я не мог получить свойства, загруженные из пакетного проекта, поэтому я понял, что мне нужно передать spring.active.profiles как параметр Job, и это, казалось, решило это. Но есть и другие вещи в приложении Spring Boot Batch, которые не загружаются правильно, как файл schema-platform.sql, и база данных не инициализируется и т. Д.Spring Integration Invocation Spring Batch

В этом первоначальном запуске задания я мог бы захотеть ответ, чтобы вернуться к Spring Integration для некоторых сообщений о статусе работы. Могут быть времена, когда я хочу запускать задание без интеграции Spring, начиная работу, но все же воспользоваться возможностью отправки статусов обратно в проект Spring Integration, обеспечивающий его прослушивание на канале или что-то в этом роде.

Я просмотрел довольно много образцов Spring и еще не нашел мой точный сценарий, большинство из них связаны с двумя зависимостями в одном проекте, поэтому, возможно, я делаю то, что невозможно, но я уверен, что я «Просто не хватает чего-то в конфигурации Spring.

Мои вопросы/вопросы:

  • Я не хочу Интеграционный проект Spring ничего знать о конфигурации SpringBatch другой, чем работы его ногами прочь. Я нашел хороший способ сделать эту ссылку на Job Bean, не загружая всю загрузку в пакетную конфигурацию.
  • Должен ли я разделять эти два проекта или было бы лучше их комбинировать, поскольку у меня есть двусторонняя связь между ними.
  • Как начать работу с проекта интеграции. Мы используем проект Spring-пакетной интеграции с JobLaunchRequest и JobLauncher. Кажется, это работает в том же процессе, что и проект Spring Integration, и я пропускаю много инициализации моих проектов SpringBootBatch.
  • Должен ли я использовать CommandLineRunner вместо этого, чтобы принудить его к другому процессу.
  • Is SpringApplication.run (BatchConfiguration.class) ответ?

Ищет общую конфигурацию конфигурации проекта для удовлетворения этих требований.

+0

Если у вас есть 2 отдельных проекта, вам нужен какой-то механизм связи, как очередь между ними. Если вы этого не сделаете, вы обязаны иметь их как один артефакт. Вы можете помещать экземпляры 'JobLaunchRequest' в очередь, которая читается на стороне Spring Batch (с интеграцией Spring, вероятно, так что вам все еще нужна часть этого на стороне партии), чтобы запустить задание. –

+0

Похоже, что действительно развязать среду, у меня есть один проект Spring Spring Spring Integration (aka ProjectA) и одна Spring Spring Spring Batch (со встроенным проектом Spring Spring) для запуска заданий (ProjectB). –

+0

ProjectA в этом случае довольно легкий, он просто знает о конфигурации SpringIntegration, опросе файлов и файла spring.active.profiles, которые необходимо отправить в ProjectB. Я предполагаю, что это сообщение Spring, которое я отправляю, будет содержать эти параметры пакета. –

ответ

0

Spring Cloud Data Flow в сочетании с Spring Cloud Task выполняет именно то, что вы просите. Он запускает приложения Spring Spring Task (которые могут содержать пакетные задания) в качестве новых процессов на выбранной вами платформе. Я бы посоветовал вам проверить этот проект здесь: http://cloud.spring.io/spring-cloud-dataflow/

+0

Действительно искал решение с Spring Integration и Spring Batch и не собирался добавлять еще один слой и технологию, но я проверю его. –

Смежные вопросы