{"id":19656744,"url":"https://github.com/daggerok/functional-streaming","last_synced_at":"2025-04-28T18:32:54.079Z","repository":{"id":151041670,"uuid":"90787479","full_name":"daggerok/functional-streaming","owner":"daggerok","description":"4del: This is going to be removed... or refactored if not so useless as I'm currently thinking... spring-cloud-stream, spring-cloud-reactive-streams, kafka, docker, gradle composed builds, streaming using reactor Mono/Flux","archived":false,"fork":false,"pushed_at":"2019-06-09T22:43:24.000Z","size":129,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-05T10:23:16.368Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daggerok.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2017-05-09T20:09:30.000Z","updated_at":"2020-09-08T02:59:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"08650ffa-3616-4b7c-8797-6222ac9ce9da","html_url":"https://github.com/daggerok/functional-streaming","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Ffunctional-streaming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Ffunctional-streaming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Ffunctional-streaming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Ffunctional-streaming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daggerok","download_url":"https://codeload.github.com/daggerok/functional-streaming/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251366138,"owners_count":21578080,"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":[],"created_at":"2024-11-11T15:28:47.001Z","updated_at":"2025-04-28T18:32:54.072Z","avatar_url":"https://github.com/daggerok.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= functional-streaming image:https://travis-ci.org/daggerok/functional-streaming.svg?branch=master[\"Build Status\", link=\"https://travis-ci.org/daggerok/functional-streaming\"]\n\nsee other repo:\n\n- link:https://github.com/daggerok/spring-cloud-function-stream-integration[spring-cloud-function and spring-cloud-stream integration]\n\n== functional streaming using spring cloud (reactive) streams, schema registry, avro\n\nsee https://github.com/daggerok/functional-streaming/tree/master/streaming-reactive-processor[streaming-reactive-processor] and https://github.com/daggerok/functional-streaming/tree/master/streaming-reactive-consumer[streaming-reactive-consumer] projects\n\nin our messaging pipeline we can use Mono / Flux from reactor project, which makes developing streaming cloud native application more exciting!\n\n[source,java]\n----\n  @Output(Processor.OUTPU)\n  @StreamListener(Processor.INPUT)\n  public Flux\u003cMessage\u003cString\u003e\u003e correctMessagesReceiver(final Flux\u003cMap\u003cString, String\u003e\u003e payload) {\n\n    return payload.map(Map::entrySet)\n                  .map(Set::iterator)\n                  .filter(Iterator::hasNext)\n                  .map(Iterator::next)\n                  .map(this::doSomeTransformationLogic)\n                  .window(3) // pagination or could be also time interval collector\n                  .flatMap(window -\u003e window.reduce(\"|\", (s1, s2) -\u003e s1 + s2 + \"|\"))\n                  .map(body -\u003e MessageBuilder.withPayload(body).build());\n  }\n----\n\nright now is only one limitation: spring-cloud-stream doesn't suppotr spring-webflux yet, but I hope It will be changed soon (plus see streaming-reactive-*)\n\n== build, run, clean\n\n. bootstrap your message broker (docker-compose required)\n. start apps\n. cleanup\n\n[source,bash]\n----\ngradle composeUp\n\ngradle bootRun-producer\ngradle bootRun-processor\ngradle bootRun-aggregator\ngradle bootRun-consumer\ngradle bootRun-reactive-producer\ngradle bootRun-reactive-aggregator\ngradle bootRun-reactive-processor\ngradle bootRun-reactive-consumer\n\ngradle composeDown\ngradle --stop\n----\n\n.run integration tests\n[source,bash]\ngradle integrationTests\n\nother repositories:\n\n. link:https://github.com/daggerok/serverless-examples[Serveless examples (spring-cloud-functions)]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaggerok%2Ffunctional-streaming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaggerok%2Ffunctional-streaming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaggerok%2Ffunctional-streaming/lists"}