= Spring Functions Catalog

In this repository, you will find a collection of components that can meet various data integration use cases and requirements.

The repository's primary focus is to provide a set of standalone Java functions that can be useful in the end-user applications as-is.

Most of these functions are, essentially, auto-configurations for specific https://docs.spring.io/spring-integration/reference/endpoint-summary.html#endpoint-summary[Spring Integration Channel Adapter].
These functions can be consumed in the target project any possible way, for example, the `FunctionFlowBuilder` from https://docs.spring.io/spring-cloud-function/docs/current/reference/html/spring-integration.html#spring-integration[Spring Cloud Function Integration] module can be used to compose an `IntegrationFlow` for any complex solution.

This functions catalog is also a foundation for https://spring.io/projects/spring-cloud-stream-applications[Spring Cloud Stream Applications] project.

This BOM is needed to be included into dependency management:

[source,xml]
----
<dependency>
    <groupId>org.springframework.cloud.fn</groupId>
    <artifactId>spring-functions-catalog-bom</artifactId>
    <version>5.0.0-SNAPSHOT</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
----

== Reusable Functions

|===
| `java.util.Supplier` | `java.util.Function` | `java.util.Consumer`

|link:supplier/spring-debezium-supplier/README.adoc[Debezium supplier]
|link:function/spring-aggregator-function/README.adoc[Aggregator]
|link:consumer/spring-analytics-consumer/README.adoc[Analytics]

|link:supplier/spring-file-supplier/README.adoc[File]
|link:function/spring-filter-function/README.adoc[Filter]
|link:consumer/spring-cassandra-consumer/README.adoc[Cassandra]

|link:supplier/spring-ftp-supplier/README.adoc[FTP]
|link:function/spring-header-enricher-function/README.adoc[Header-Enricher]
|link:consumer/spring-elasticsearch-consumer/README.adoc[Elasticsearch]

|link:supplier/spring-http-supplier/README.adoc[HTTP]
|link:function/spring-header-filter-function/README.adoc[Header-Filter]
|link:consumer/spring-ftp-consumer/README.adoc[FTP]

|link:supplier/spring-jdbc-supplier/README.adoc[JDBC]
|link:function/spring-http-request-function/README.adoc[HTTP Request]
|link:consumer/spring-jdbc-consumer/README.adoc[JDBC]

|link:supplier/spring-jms-supplier/README.adoc[JMS]
|link:function/spring-spel-function/README.adoc[SpEL]
|link:consumer/spring-log-consumer/README.adoc[Log]

|link:supplier/spring-mail-supplier/README.adoc[Mail]
|link:function/spring-splitter-function/README.adoc[Splitter]
|link:consumer/spring-mongodb-consumer/README.adoc[MongoDB]

|link:supplier/spring-mongodb-supplier/README.adoc[MongoDB]
|link:function/spring-task-launch-request-function/README.adoc[Task Launch Request]
|link:consumer/spring-mqtt-consumer/README.adoc[MQTT]

|link:supplier/spring-mqtt-supplier/README.adoc[MQTT]
|link:function/spring-twitter-function/README.adoc[Twitter]
|link:consumer/spring-rabbit-consumer/README.adoc[RabbitMQ]

|link:supplier/spring-s3-supplier/README.adoc[AWS S3]
|
|link:consumer/spring-redis-consumer/README.adoc[Redis]

|link:supplier/spring-rabbit-supplier/README.adoc[RabbitMQ]
|
|link:consumer/spring-rsocket-consumer/README.adoc[RSocket]

|link:supplier/spring-sftp-supplier/README.adoc[SFTP]
|
|link:consumer/spring-s3-consumer/README.adoc[AWS S3]

|link:supplier/spring-syslog-supplier/README.adoc[Syslog]
|
|link:consumer/spring-sftp-consumer/README.adoc[SFTP]

|link:supplier/spring-tcp-supplier/README.adoc[TCP]
|
|link:consumer/spring-tcp-consumer/README.adoc[TCP]

|link:supplier/spring-time-supplier/README.adoc[Time]
|
|link:consumer/spring-twitter-consumer/README.adoc[Twitter]

|link:supplier/spring-twitter-supplier/README.adoc[Twitter]
|
|link:consumer/spring-websocket-consumer/README.adoc[Websocket]

|link:supplier/spring-websocket-supplier/README.adoc[Websocket]
|
|link:consumer/spring-wavefront-consumer/README.adoc[Wavefront]

|link:supplier/spring-xmpp-supplier/README.adoc[XMPP]
|
|link:consumer/spring-xmpp-consumer/README.adoc[XMPP]

|===


== Guidelines

See link:CONTRIBUTING.adoc[Contributor Guidelines].
