{"id":37020084,"url":"https://github.com/v12technology/fluxtion","last_synced_at":"2026-01-14T02:15:34.292Z","repository":{"id":33677320,"uuid":"160260778","full_name":"v12technology/fluxtion","owner":"v12technology","description":"core fluxtion static event processor generator tool and runtime components","archived":false,"fork":false,"pushed_at":"2025-07-13T09:38:43.000Z","size":41243,"stargazers_count":2,"open_issues_count":14,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-13T09:49:30.723Z","etag":null,"topics":["complex-event-processing","event-processing","event-sourcing","event-streams","java","low-latency","stream-processing","stream-processor"],"latest_commit_sha":null,"homepage":"https://v12technology.github.io/fluxtion/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v12technology.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2018-12-03T22:13:02.000Z","updated_at":"2025-07-13T09:29:11.000Z","dependencies_parsed_at":"2023-09-22T18:18:03.947Z","dependency_job_id":"84ac8379-3536-48b2-9271-f5de1a816669","html_url":"https://github.com/v12technology/fluxtion","commit_stats":null,"previous_names":[],"tags_count":335,"template":false,"template_full_name":null,"purl":"pkg:github/v12technology/fluxtion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v12technology%2Ffluxtion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v12technology%2Ffluxtion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v12technology%2Ffluxtion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v12technology%2Ffluxtion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v12technology","download_url":"https://codeload.github.com/v12technology/fluxtion/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v12technology%2Ffluxtion/sbom","scorecard":{"id":913964,"data":{"date":"2025-08-11","repo":{"name":"github.com/v12technology/fluxtion","commit":"43727f3079c5d48b57d15cb703f07dc49b263438"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:29","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:30","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":10,"reason":"SAST tool detected: CodeQL","details":["Info: SAST configuration detected: CodeQL","Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: invalid parameter name: scripts/mavenRelease.sh:0","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/v12technology/fluxtion/release.yml/master?enable=pin","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":0,"reason":"22 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-78wr-2p64-hpwj","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-4wp7-92pw-q264","Warn: Project is vulnerable to: GHSA-9cmq-m9j5-mvww","Warn: Project is vulnerable to: GHSA-cr5q-6q9f-rq6q","Warn: Project is vulnerable to: GHSA-j6gc-792m-qgm2","Warn: Project is vulnerable to: GHSA-pj73-v5mw-pm9j","Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8","Warn: Project is vulnerable to: GHSA-5w6v-399v-w3cc","Warn: Project is vulnerable to: GHSA-mrxw-mxhj-p664","Warn: Project is vulnerable to: GHSA-r95h-9x8f-r3f7","Warn: Project is vulnerable to: GHSA-vvfq-8hwr-qm4m","Warn: Project is vulnerable to: GHSA-2rxp-v6pw-ch6m","Warn: Project is vulnerable to: GHSA-4xqq-m2hx-25v8","Warn: Project is vulnerable to: GHSA-5866-49gr-22v4","Warn: Project is vulnerable to: GHSA-r55c-59qm-vjw6","Warn: Project is vulnerable to: GHSA-vg3r-rm7w-2xgh","Warn: Project is vulnerable to: GHSA-vmwr-mc7x-5vc3","Warn: Project is vulnerable to: GHSA-22h5-pq3x-2gf2","Warn: Project is vulnerable to: GHSA-6f62-3596-g6w7","Warn: Project is vulnerable to: GHSA-r995-q44h-hr64"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T20:18:17.229Z","repository_id":33677320,"created_at":"2025-08-24T20:18:17.229Z","updated_at":"2025-08-24T20:18:17.229Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["complex-event-processing","event-processing","event-sourcing","event-streams","java","low-latency","stream-processing","stream-processor"],"created_at":"2026-01-14T02:15:33.519Z","updated_at":"2026-01-14T02:15:34.282Z","avatar_url":"https://github.com/v12technology.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://v12technology.github.io/fluxtion/\"\u003e\n        \u003cimg width=\"270\" height=\"200\" src=\"images/Fluxtion_logo.png\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n[![Github build](https://github.com/v12technology/fluxtion/workflows/MavenCI/badge.svg)](https://github.com/v12technology/fluxtion/actions)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.fluxtion/runtime/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.fluxtion/runtime)\n\n# [USER DOCUMENTATION](https://v12technology.github.io/fluxtion/)\n\n# Fluxtion embedded stream processing\n\nFluxtion is a Java library and code generation utility designed for building high-performance, low-latency streaming\napplications. It provides a lightweight framework for event-driven programming, particularly suited for applications\nsuch as financial trading systems, real-time analytics, and sensor data processing. Fluxtion emphasizes simplicity,\nefficiency, and ease of use in handling streaming data.\n\n\n\u003cdiv class=\"grid\"\u003e\n\u003cdiv class=\"col-1-2\"\u003e\n\u003cdiv class=\"content\"\u003e\n\u003cul\u003e\n  \u003cli\u003e\u003cstrong\u003eStreaming event processing\u003c/strong\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eAOT compiled for fast cloud start\u003c/strong\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eSpring integration\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv class=\"col-1-2\"\u003e\n\u003cdiv class=\"content\"\u003e\n\u003cul\u003e\n  \u003cli\u003e\u003cstrong\u003eOptimised to reduce processing costs\u003c/strong\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eLow latency nanosecond response with zero gc\u003c/strong\u003e\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003e30 million events per second per core\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n## Application integration\nEmbed a Fluxtion stream processing engine in your application, freeing your business logic from messaging vendor lock-in.\n\n![](docs/images/embedding-fluxtion.png)\n\n## Performance \nSee the [performance section](https://v12technology.github.io/fluxtion/sections/performance.html) for jmh and hdr results\n\n* 33 million events processed per second\n* Average latency is 30 nanoseconds to process one event including app logic\n* The Fluxtion event processor is in the low nanosecond range for event processing overhead\n* Zero gc\n* Single threaded application\n\n\n## Code sample\nFluxtion supports both imperative service style and functional patterns. Below is an example of functional coding style\nthat adds two numbers from independent data streams and logs when the sum is greater than 100.\n\n```java\n/**\n * Simple Fluxtion hello world stream example. Add two numbers and log when sum \u003e 100\n * \u003cul\u003e\n *     \u003cli\u003eSubscribe to two event streams, Data1 and Data1\u003c/li\u003e\n *     \u003cli\u003eMap the double values of each stream using getter\u003c/li\u003e\n *     \u003cli\u003eApply a stateless binary function {@link Double#sum(double, double)}\u003c/li\u003e\n *     \u003cli\u003eApply a filter that logs to console when the sum \u003e 100\u003c/li\u003e\n * \u003c/ul\u003e\n */\npublic class HelloWorld {\n    public static void main(String[] args) {\n        //builds the EventProcessor\n        EventProcessor eventProcessor = Fluxtion.interpret(cfg -\u003e {\n            var data1Stream = subscribe(Data1.class)\n                    .console(\"rcvd -\u003e {}\")\n                    .mapToDouble(Data1::value);\n\n            subscribe(Data2.class)\n                    .console(\"rcvd -\u003e {}\")\n                    .mapToDouble(Data2::value)\n                    .map(Double::sum, data1Stream)\n                    .filter(d -\u003e d \u003e 100)\n                    .console(\"OUT: sum {} \u003e 100\");\n        });\n        //init and send events\n        eventProcessor.init();\n        //no output \u003c 100\n        eventProcessor.onEvent(new Data1(20.5));\n        //no output \u003c 100\n        eventProcessor.onEvent(new Data2(63));\n        //output \u003e 100 - log to console\n        eventProcessor.onEvent(new Data1(56.8));\n    }\n\n    public record Data1(double value) {\n    }\n\n    public record Data2(double value) {\n    }\n}\n```\n\n## Execution output\n```text\nrcvd -\u003e Data1[value=20.5]\nrcvd -\u003e Data2[value=63.0]\nrcvd -\u003e Data1[value=56.8]\nOUT: sum 119.8 \u003e 100\n\nProcess finished with exit code 0\n```\n\n## Processing graph\n\n```mermaid\nflowchart TB\n    \n    style EventProcessor fill:#e9ebe4,stroke:#333,stroke-width:1px\n    classDef eventHandler color:#022e1f,fill:#aaa3ff,stroke:#000;\n    classDef graphNode color:#022e1f,fill:#00cfff,stroke:#000;\n    classDef exportedService color:#022e1f,fill:#aaa3ff,stroke:#000;\n\n    \n    EventA\u003e\u003cb\u003eInputEvent\u003c/b\u003e::Event_A]:::eventHandler \n    EventB\u003e\u003cb\u003eInputEvent\u003c/b\u003e::Event_B]:::eventHandler \n    \n    HandlerA[\u003cb\u003eSubscriber\u003c/b\u003e::Event_A]:::graphNode \n    HandlerB[\u003cb\u003eSubscriber\u003c/b\u003e::Event_A]:::graphNode \n    \n    MapData1[\u003cb\u003eMap\u003c/b\u003e -\u003e mapToDouble]:::graphNode \n    MapData2[\u003cb\u003eMap\u003c/b\u003e -\u003e mapToDouble]:::graphNode \n    \n    MapDefaultData1[\u003cb\u003eMap\u003c/b\u003e -\u003e defaultValue]:::graphNode \n    MapDefaultData2[\u003cb\u003eMap\u003c/b\u003e -\u003e defaultValue]:::graphNode \n    \n    BiMapSum[\u003cb\u003eBiMap\u003c/b\u003e -\u003e Double::sum]:::graphNode \n    \n    Console1[\u003cb\u003ePeek\u003c/b\u003e -\u003e console]:::graphNode \n    Filter[\u003cb\u003eFilter\u003c/b\u003e -\u003e d \u003e 100]:::graphNode \n    Console2[\u003cb\u003ePeek\u003c/b\u003e -\u003e console]:::graphNode \n    \n    EventA --\u003e HandlerA\n    EventB --\u003e HandlerB\n    \n    subgraph EventProcessor\n      HandlerA --\u003e MapData1 --\u003e MapDefaultData1 --\u003e BiMapSum\n      HandlerB --\u003e MapData2 --\u003e MapDefaultData2 --\u003e BiMapSum\n      BiMapSum --\u003e Console1 --\u003e Filter --\u003e Console2\n    end\n    \n```\n\n# Top level components\nThere are two major components provided by Fluxtion the developer uses to build event driven logic.\n\n## Compiler\nThe compiler analyses the configuration information provided by the programmer and builds a dependency injection container\nthat houses all the user components or beans combined with pre-calculated event dispatch. Outputs from the compiler \nare either \n- In memory di container running in an interpreted mode\n- A container generated ahead of time and serialised to code \n\n## Runtime\nThe runtime provides the dependency injection container with a core set of libraries required at runtime. An AOT generated\ncontainer only requires the runtime to function, no compiler libraries are required.\n\n\n\n# Donations\n\nThe guys from ej technologies kindly donated their [java profiler JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html)\nto allow me to optimise Fluxtion, many thanks.\n\n[![](docs/images/miscellaneous/jprofiler_medium.png)](https://www.ej-technologies.com/products/jprofiler/overview.html)\n\n# Contributing\nWe welcome contributions to the project. Detailed information on our ways of working will\nbe written in time. In brief our goals are:\n\n* Sign the [Fluxtion Contributor Licence Agreement](https://github.com/v12technology/fluxtion/blob/master/contributorLicenseAgreement).\n* Author a change with suitabke test case and documentation.\n* Push your changes to a fork.\n* Submit a pull request.\n# License\nFluxtion is licensed under the [Server Side Public License](https://www.mongodb.com/licensing/server-side-public-license).\nThis license is created by MongoDb, for further info see [FAQ](https://www.mongodb.com/licensing/server-side-public-license/faq)\nand comparison with [AGPL v3.0](https://www.mongodb.com/licensing/server-side-public-license/faq).\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv12technology%2Ffluxtion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv12technology%2Ffluxtion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv12technology%2Ffluxtion/lists"}