Flaxoos / extra-ktor-plugins

Feature-rich, efficient, and highly customizable plugins for your Multiplatform Ktor Server or Client
https://flaxoos.github.io/extra-ktor-plugins/
Other
61 stars 3 forks source link
kotlin kotlin-multiplatform ktor ktor-plugin

Ktor Extra Ktor Plugins

Build Status Maven-central Language: Kotlin Koverage: 94.42% Docs Awesome Kotlin Badge

Feature-rich, efficient, and highly customizable plugins for your Multiplatform Ktor Server or Client


Server Plugins

Plugin Supported Platforms Description
Kafka JVM Sets up a Kafka client admin, producer, and consumer using a dedicated DSL. Allows consumption logic definition during the installation phase.
Task Scheduling JVM / Native^ Task scheduling for distributed servers with various and extendable task management strategies
Rate Limiting JVM / Native Highly configurable rate limiter with offering different startegies, request weighting, blacklisting and whitelisting of requests based on authentication, host and user agents

Client Plugins

Plugin Supported Platforms Description
Circuit Breaker JVM / Native / JS Enhances system resilience by halting requests to failing services once a defined error threshold is reached. Automatically switches between open and closed states based on the health of the targeted service.

Note that ^ means issues with native binary dependencies, feel free to pull the project and publish locally


Usage

Pleas see Documentation

Installation

The libraries are published to maven central, see above for the latest version

dependencies {
    implementation("io.github.flaxoos:ktor-server-kafka:$ktor_plugins_version")
    implementation("io.github.flaxoos:ktor-server-task-scheduling-$module:$ktor_plugins_version")
    implementation("io.github.flaxoos:ktor-server-rate-limiting:$ktor_plugins_version")
    implementation("io.github.flaxoos:ktor-client-circuit-breaker:$ktor_plugins_version")
}

Examples:

See examples repository

Contributing

Contributions are always welcome! If you have an idea for a plugin or want to improve an existing one, feel free to fork this repository and submit a pull request.

Sponsership

If you find this project useful, feel free to use the sponser button to support it ❤️ ->