{"id":19362009,"url":"https://github.com/numaproj/numaflow-java","last_synced_at":"2025-04-23T12:32:40.682Z","repository":{"id":65857496,"uuid":"557443486","full_name":"numaproj/numaflow-java","owner":"numaproj","description":"Numaflow Java SDK","archived":false,"fork":false,"pushed_at":"2025-04-22T19:22:45.000Z","size":588,"stargazers_count":24,"open_issues_count":14,"forks_count":11,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-04-22T19:33:05.709Z","etag":null,"topics":["java","numaflow","numaflow-sdk"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/numaproj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-25T17:44:42.000Z","updated_at":"2025-04-11T13:40:22.000Z","dependencies_parsed_at":"2024-03-28T16:46:56.841Z","dependency_job_id":"15b7b711-5e54-43ae-80ef-76f155fa7668","html_url":"https://github.com/numaproj/numaflow-java","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numaproj%2Fnumaflow-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numaproj%2Fnumaflow-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numaproj%2Fnumaflow-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numaproj%2Fnumaflow-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/numaproj","download_url":"https://codeload.github.com/numaproj/numaflow-java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250435158,"owners_count":21430228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","numaflow","numaflow-sdk"],"created_at":"2024-11-10T07:26:14.615Z","updated_at":"2025-04-23T12:32:40.662Z","avatar_url":"https://github.com/numaproj.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java SDK for Numaflow\n\n[![Build](https://github.com/numaproj/numaflow-java/actions/workflows/run-tests.yaml/badge.svg?branch=main)](https://github.com/numaproj/numaflow-java/actions/workflows/run-tests.yaml)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![Release Version](https://img.shields.io/github/v/release/numaproj/numaflow-java?label=numaflow-java)](https://github.com/numaproj/numaflow-java/releases/latest)\n[![Maven Central](https://img.shields.io/maven-central/v/io.numaproj.numaflow/numaflow-java.svg?label=Maven%20Central)](https://central.sonatype.com/search?q=numaflow+java\u0026smo=true)\n\nThis SDK provides the interface for\nwriting [UDSources](https://numaflow.numaproj.io/user-guide/sources/user-defined-sources/)\n, [UDTransformer](https://numaflow.numaproj.io/user-guide/sources/transformer/overview/)\n, [UDFs](https://numaflow.numaproj.io/user-guide/user-defined-functions/user-defined-functions/)\nand [UDSinks](https://numaflow.numaproj.io/user-guide/sinks/user-defined-sinks/) in Java.\n\n## Getting Started\n\n### Requirements\n\n* `java` 11+\n* `maven` 3.6+\n\n### Importing Numaflow Java SDK\n\n#### Maven users\n\nAdd this dependency to your project's POM:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.numaproj.numaflow\u003c/groupId\u003e\n  \u003cartifactId\u003enumaflow-java\u003c/artifactId\u003e\n  \u003cversion\u003e0.9.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n#### Gradle users\n\nAdd this dependency to your project's build file:\n\n```groovy\ncompile \"io.numaproj.numaflow:numaflow-java:0.9.2\"\n```\n\n### Build\n\n```bash\nmvn clean install\n```\n\n### Examples on how to write UDSources, UDTransformers, UDFs, UDSinks and SideInputs in Java\n\n* **User Defined Source(UDSource)**\n    * [Source](examples/src/main/java/io/numaproj/numaflow/examples/source/simple)\n\n* **User Defined Source Transformer(UDTransformer)**\n    * [Source Transformer](examples/src/main/java/io/numaproj/numaflow/examples/sourcetransformer/eventtimefilter)\n\n* **User Defined Function(UDF)**\n    * [MapStream](examples/src/main/java/io/numaproj/numaflow/examples/mapstream/flatmapstream)\n    * [Map](examples/src/main/java/io/numaproj/numaflow/examples/map)\n    * [Reduce](examples/src/main/java/io/numaproj/numaflow/examples/reduce)\n    * [ReduceStream](examples/src/main/java/io/numaproj/numaflow/examples/reducestreamer)\n    * [SessionReduce](examples/src/main/java/io/numaproj/numaflow/examples/reducesession)\n\n* **User Defined Sink(UDSink)**\n    * [Sink](examples/src/main/java/io/numaproj/numaflow/examples/sink/simple)\n\n* **User Defined SideInput(SideInput)**\n    * [SideInput](examples/src/main/java/io/numaproj/numaflow/examples/sideinput)\n\nYou will see a warning in the log on startup, which you can safely ignore:\n\n```\nOct 25, 2022 12:26:30 PM io.netty.bootstrap.AbstractBootstrap setChannelOption\nWARNING: Unknown channel option 'SO_KEEPALIVE' for channel '[id: 0x6e9c19c7]'\n```\n\nThis is due to grpc-netty trying to set SO_KEEPALIVE when it\nshouldn't (https://github.com/grpc/grpc-java/blob/47ddfa4f205d4672e035c37349dfd3036c74efb6/netty/src/main/java/io/grpc/netty/NettyClientTransport.java#L237)\n\nIt is suggested to use `amazoncorretto:11` as base for your docker image. We observed that without a\nbase image, the java user-defined container can fail the Numaflow health check.\n\n### API Documentation\n\nPlease, refer to\nour [Javadoc](https://javadoc.io/doc/io.numaproj.numaflow/numaflow-java/latest/index.html) website.\n\n## Development\n\n### Updating proto definition files\n\nTo keep up-to-date, do the following before building(using udf as an example):\n\n* copy the `*.proto` files\n  from [numaflow-go](https://github.com/numaproj/numaflow-go/tree/main/pkg/apis/proto)\n  into `/src/main/proto`\n* replace the `go_package` lines with the following `java_package`:\n\n```protobuf\noption java_package = \"io.numaproj.numaflow.function.v1\";\n```\n\n## Code Style\n\nUse [Editor Config](https://www.jetbrains.com/help/idea/editorconfig.html). \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnumaproj%2Fnumaflow-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnumaproj%2Fnumaflow-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnumaproj%2Fnumaflow-java/lists"}