{"id":19215421,"url":"https://github.com/asynkron/protoactor-kotlin","last_synced_at":"2025-07-15T05:33:17.435Z","repository":{"id":60377813,"uuid":"96669281","full_name":"asynkron/protoactor-kotlin","owner":"asynkron","description":"Ultra-fast distributed cross-platform actor framework","archived":false,"fork":false,"pushed_at":"2020-04-01T04:49:52.000Z","size":887,"stargazers_count":222,"open_issues_count":8,"forks_count":25,"subscribers_count":28,"default_branch":"master","last_synced_at":"2024-12-11T23:32:37.207Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://proto.actor","language":"Kotlin","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/asynkron.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}},"created_at":"2017-07-09T07:50:32.000Z","updated_at":"2024-11-28T13:24:46.000Z","dependencies_parsed_at":"2022-09-28T19:50:13.527Z","dependency_job_id":null,"html_url":"https://github.com/asynkron/protoactor-kotlin","commit_stats":null,"previous_names":["asynkronit/protoactor-kotlin"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asynkron%2Fprotoactor-kotlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asynkron%2Fprotoactor-kotlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asynkron%2Fprotoactor-kotlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asynkron%2Fprotoactor-kotlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asynkron","download_url":"https://codeload.github.com/asynkron/protoactor-kotlin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230462906,"owners_count":18229864,"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-09T14:13:40.466Z","updated_at":"2024-12-19T16:11:30.465Z","avatar_url":"https://github.com/asynkron.png","language":"Kotlin","funding_links":[],"categories":["并发编程","Kotlin"],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/AsynkronIT/protoactor-kotlin.svg?branch=master)](https://travis-ci.org/AsynkronIT/protoactor-kotlin)\n[![Download](https://api.bintray.com/packages/asynkronit/protoactor-kotlin/proto-actor/images/download.svg)](https://bintray.com/asynkronit/protoactor-kotlin/proto-actor/_latestVersion)\n[![Coverage Status](https://codecov.io/gh/AsynkronIT/protoactor-kotlin/branch/master/graph/badge.svg)](https://codecov.io/gh/AsynkronIT/protoactor-kotlin)\n![stability-experimental](https://img.shields.io/badge/stability-experimental-orange.svg)\n\n\n# Proto.Actor Kotlin\nUltra-fast, distributed, cross-platform actors.\nThis is the Kotlin repository for [Proto.Actor](http://proto.actor/).\n\n## Stability\nIt's used in production but doesn't have the same adoption and stability as the [C#](https://github.com/AsynkronIT/protoactor-dotnet) and [Go](https://github.com/AsynkronIT/protoactor-go) implementations.\n\n## How to build\n```\n./gradlew build\n```\n\n## Design principles\n\n**Minimalistic API** - The API should be small and easy to use. Avoid enterprisey containers and configurations.\n\n**Build on existing technologies** - There are already a lot of great technologies for e.g. networking and clustering.\nBuild on those instead of reinventing them. E.g. gRPC streams for networking, Consul for clustering.\n\n**Pass data, not objects** - Serialization is an explicit concern - don't try to hide it. Protobuf all the way.\n\n**Be fast** - Do not trade performance for magic API trickery.\n\nInprocess Ping-Pong results:\n```\nDispatcher\t\tElapsed\t\tMsg/sec\n300\t\t\t273\t\t116885925\n400\t\t\t217\t\t147426522\n500\t\t\t150\t\t213037390\n600\t\t\t85\t\t375979638\n700\t\t\t87\t\t364621820\n800\t\t\t83\t\t381552772 \u003c-- 380+ mil msg/sec\n```\n\n## Modules\n\nDependencies\n\n![Package dependencies](docs/diagrams/proto-actor-packages.png)\n\n## Getting started\nThe best place currently for learning how to use Proto.Actor is the [examples](https://github.com/AsynkronIT/protoactor-kotlin/tree/master/examples).\n\n\n### Hello world\n`build.gradle.kts`\n```\nrepositories {\n    jcenter()\n}\n\ndependencies {\n\timplementation(\"actor.proto:proto-actor:latest.release\")\n}\n```\n\n`App.kt`\n```\nimport actor.proto.*\n\nfun main() {\n\tval prop = fromFunc { msg -\u003e\n\t\twhen (msg) {\n\t\t\tis Started -\u003e println(\"Started\")\n\t\t\tis String -\u003e {\n\t\t\t\tprintln(\"Hello $msg\")\n\t\t\t\tstop(self)\n\t\t\t}\n\t\t\tis Stopping -\u003e println(\"Stopping\")\n\t\t\tis Stopped -\u003e println(\"Stopped\")\n\t\t\telse -\u003e println(\"Unknown message $msg\")\n\t\t}\n\t}\n\n\tval pid = spawn(prop)\n\tsend(pid, \"Proto.Actor\")\n\treadLine()\n}\n```\n\n## Release management\nStable release are published to https://bintray.com/asynkronit/protoactor-kotlin and linked to jcenter.\nAnyone of the repositories below will do.\n```\nrepositories {\n   \tmaven(\"https://dl.bintray.com/asynkronit/protoactor-kotlin\")\n}\n```\n```\nrepositories {\n   \tjcenter()\n}\n```\n\n\n### Snapshot\nCommits on the master branch are deployed as snapshots to\nhttps://oss.jfrog.org/artifactory/oss-snapshot-local/actor/proto/ and can be consumed by adding the following configuration to your gradle file:\n\n```\nrepositories {\n    repositories {\n        maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local' }\n    }\n}\n\ndependencies {\n    compile 'actor.proto:proto-actor:0.1.0-SNAPSHOT'\n}\n```\n\n### Publishing a new version\nWhen a tag is created e.g. `v0.1.0` Travis will build and publish the packages to Bintray.\n\n### Support\n\nMany thanks to [JetBrains](https://www.jetbrains.com) for support!\n\nAlso thanks to [ej-technologies.com for their Java profiler - JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasynkron%2Fprotoactor-kotlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasynkron%2Fprotoactor-kotlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasynkron%2Fprotoactor-kotlin/lists"}