Spring Integration

Spring Boot offers several conveniences for working with Spring Integration, including the spring-boot-starter-integration starter. Spring Integration provides abstractions over messaging and also other transports such as HTTP, TCP, and others. If Spring Integration is available on your classpath, it is initialized through the @EnableIntegration annotation.

Spring Integration polling logic relies on the auto-configured TaskScheduler. The default PollerMetadata (poll unbounded number of messages every second) can be customized with spring.integration.poller.* configuration properties.

Spring Boot also configures some features that are triggered by the presence of additional Spring Integration modules. If spring-integration-jmx is also on the classpath, message processing statistics are published over JMX. If spring-integration-jdbc is available, the default database schema can be created on startup, as shown in the following line:

  • Properties

  • YAML

spring.integration.jdbc.initialize-schema=always
spring:
  integration:
    jdbc:
      initialize-schema: "always"

If spring-integration-rsocket is available, developers can configure an RSocket server using spring.rsocket.server.* properties and let it use IntegrationRSocketEndpoint or RSocketOutboundGateway components to handle incoming RSocket messages. This infrastructure can handle Spring Integration RSocket channel adapters and @MessageMapping handlers (given spring.integration.rsocket.server.message-mapping-enabled is configured).

Spring Boot can also auto-configure an ClientRSocketConnector using configuration properties:

  • Properties

  • YAML

spring.integration.rsocket.client.host=example.org
spring.integration.rsocket.client.port=9898
# Connecting to a RSocket server over TCP
spring:
  integration:
    rsocket:
      client:
        host: "example.org"
        port: 9898
  • Properties

  • YAML

spring.integration.rsocket.client.uri=ws://example.org
# Connecting to a RSocket Server over WebSocket
spring:
  integration:
    rsocket:
      client:
        uri: "ws://example.org"

See the IntegrationAutoConfiguration and IntegrationProperties classes for more details.