Spring Integration Подключение шлюза к активатору службы

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

Нужен ли в этом случае компонент IntegrationFlow? Не будет ли вызов метода шлюза просто отправлять сообщение через канал, а активатор службы может просто автоматически опрашивать, когда появляется новое сообщение?

Класс конфигурации:

@EnableIntegration
@Configuration
@IntegrationComponentScan
class IntegrationConfiguration {

  @Bean
  fun notificationChannel(): MessageChannel {
      return MessageChannels.queue().get()
  }

  @Bean
  fun integrationFlow(): IntegrationFlow {
      TODO()
  }
}

Шлюз:

@MessagingGateway(defaultRequestChannel = "notificationChannel")
@Component
interface NotificationGateway {

  fun sendNotification(bytes: ByteArray)

}

Оказание услуг:

@Service
class NotificationService {

  @ServiceActivator(inputChannel = "notificationChannel")
  fun sendNotification(bytes: ByteArray) {
      TODO()
  }
}

Я новичок в Spring Integration, и мне тяжело, так как я не могу найти понятную документацию для своего уровня знаний, особенно по Spring Integration DSL.

Моя главная проблема может заключаться в том, что теперь я понимаю использование компонента IntegrationFlow Bean.

1
0
321
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для простого варианта использования, такого как ваш, вам действительно не нужен IntegrationFlow. Простого @ServiceActivator, который у вас есть сейчас, вполне достаточно для обработки сообщений от notificationChannel. Вам нужен только @Poller в этой @ServiceActivator конфигурации, поскольку ваш notificationChannel является PollableChannel и на него нельзя подписаться.

Дополнительные сведения см. в Справочном руководстве: https://docs.spring.io/spring-integration/docs/current/reference/html/#configuration-using-poller-annotation.

Также обратите внимание на абзац в начале документа: https://docs.spring.io/spring-integration/docs/current/reference/html/#programming-considerations

Другие вопросы по теме