I am proposing the following (as it would appear in the reference documentation)...
Inbound Endpoints and Connection Establishment
The most common use case for inbound endpoints (gateway and channel adapter) is when they act as a server (listen for incoming connections). This is achieved by simply configuring them with a type="server" connection factory. However, there are use cases where the inbound endpoint establishes a connection to a server and then waits for incoming (unsolicited) messages from that server. These may be request/reply scenarios (gateway) or inbound only.
For a gateway, this can be achieved by configuring the inbound gateway with a type="client" connection factory. For an inbound channel adapter, additional configuration is required because it is also possible to use a client connection factory when an inbound channel adapter is collaborating with an outbound channel adapter (to receive asynchronous replies to messages). To use a client connection factory to establish the connection for an inbound channel adapter, set 'client-mode="true"'.
Additional attributes on the inbound endpoints to support this functionality are:
retry-interval - the interval (milliseconds) between connection attempts if a connection fails (default 60,000).
task-scheduler - provides a thread to be used to open the connection
The endpoints support 'SmartLifecycle' and auto-start defaults to true. The connection will be attempted/retried only when the endpoint is started. Stopping the endpoint closes the connection and no attempt will be made to re-establish the connection until the endpoint is started again.
The following <control-bus/> commands are supported:
retryConnection() provides a mechanism for the application to control when connections are attempted, this can be in addition to the retry schedule (or can completely replace it by setting the retry interval to -1).
single-use connections are not supported when an inbound adapter establishes the connection.