Releases: thisKK/taskrunna-framework
Releases · thisKK/taskrunna-framework
TaskRunna v1.1.2
Major Dependency Updates & Performance Improvements
All dependencies updated to latest stable versions with significant performance gains!
✨ Performance Enhancements
- 🚀 Kotlin 2.2.0 with K2 compiler - Up to 2x faster compilation!
- ⚡ 1.8x faster code highlighting and completion in IDE
- 📊 Latest Micrometer 1.14.2 - Enhanced observability and metrics
- 🌐 Ktor 3.1.0 - Major version upgrade with better performance
- 📈 Latest Guava 33.4.8 - Performance improvements and stability
🔧 Major Dependency Updates
| Dependency | Previous | New | Highlights |
|---|---|---|---|
| Kotlin | 1.9.20 |
2.2.0 |
K2 compiler, 2x faster builds |
| Micrometer | 1.12.0 |
1.14.2 |
Enhanced observability |
| Ktor | 2.3.6 |
3.1.0 |
Major version, better performance |
| Guava | 32.1.3-jre |
33.4.8-jre |
Latest stable, performance gains |
| ktlint | 11.6.1 |
12.1.1 |
Latest code style enforcement |
| Dokka | 1.9.10 |
2.0.0 |
V2 migration, future-ready |
| JUnit 5 | 5.10.0 |
5.11.4 |
Latest testing framework |
| Kotlinx Coroutines | 1.7.3 |
1.10.1 |
Enhanced async support |
🛠️ Quality Improvements
- ✅ Eliminated all deprecation warnings with Dokka V2 migration
- ✅ Enhanced build performance with K2 compiler
- ✅ Better observability with latest Micrometer features
- ✅ Future-ready with latest stable dependencies
- ✅ All tests passing with updated dependencies
- ✅ ktlint compliance maintained throughout
🔄 Breaking Changes
None! This is a drop-in replacement - just update your version:
dependencies {
implementation("com.taskrunna:taskrunna:1.1.2") // 🎯 Updated!
}📦 Installation
GitHub Packages
repositories {
maven {
url = uri("https://maven.pkg.github.com/thisKK/taskrunna-framework")
credentials {
username = "your-github-username"
password = "your-github-token"
}
}
}
dependencies {
implementation("com.taskrunna:taskrunna:1.1.2")
}Build from Source
git clone https://github.com/thisKK/taskrunna-framework.git
cd taskrunna-framework
./gradlew publishToMavenLocal🎯 What's Included
- BatchJobProcessor - Main async processing engine with enhanced performance
- BaseBatchIterator - Cursor-based pagination for data sources
- BatchJobStats - Execution statistics and monitoring
- BatchMetrics - Prometheus metrics integration (enhanced)
- PrometheusConfig - Easy metrics setup utilities
🔍 Example Usage
import com.taskrunna.batch.*
// Your batch iterator
class OrderRetryIterator : BaseBatchIterator<OrderRetry>() {
override fun loadNextBatch(cursor: String?, batchSize: Int): List<OrderRetry> {
return orderService.findFailedOrders(cursor, batchSize)
}
override fun extractCursorFrom(item: OrderRetry): String = item.id
}
// Process with metrics
val processor = BatchJobProcessor(
iterator = OrderRetryIterator(),
submitJob = { order -> retryOrderAsync(order) },
onSuccess = { order, result -> logger.info("✅ Retried order ${order.orderId}") },
onFailure = { order, error -> logger.warn("⚠️ Failed to retry ${order.orderId}") },
metrics = MicrometerBatchMetrics(prometheusRegistry, "order_retry")
)
processor.run() // 🚀 Enhanced performance with v1.1.2!📊 Metrics & Observability
Enhanced Prometheus metrics with latest Micrometer:
{prefix}_jobs_started_total- Batch jobs started{prefix}_jobs_completed_total- Batch jobs completed{prefix}_job_duration_seconds- Job execution time{prefix}_tasks_submitted_total- Individual tasks submitted{prefix}_tasks_completed_total- Individual tasks completed{prefix}_task_duration_seconds- Task execution time
Try the live example:
./gradlew :taskrunna-examples:run
curl http://localhost:8080/metrics | grep order_retry🙏 Thanks
Special thanks to all contributors and the open-source community for the amazing libraries that make TaskRunna possible!
Full Changelog: v1.1.1...v1.1.2
TaskRunna v1.1.0
🎉 Major Simplification - Single Package Release!
TaskRunna v1.1.0 makes batch processing much simpler by consolidating everything into one clean package!
✨ What's New
🎯 Single Dependency
- Before:
taskrunna-core+taskrunna-batch(confusing!) - Now: Just
com.taskrunna:taskrunna:1.1.0(simple!)
📦 Easy Installation
dependencies {
implementation("com.taskrunna:taskrunna:1.1.0") // Everything included!
}🚀 Production Ready
- ✅ Prometheus Metrics - 8+ built-in metrics for observability
- ✅ Working Examples - Order processing demo with HTTP server
- ✅ Published Package - Available on GitHub Packages
- ✅ Complete Docs - PUBLISHING.md, METRICS.md, comprehensive README
🔧 Quick Start
import com.taskrunna.batch.*
// Process orders from database → Send to Kafka
class OrderIterator : BaseBatchIterator<Order>() {
override fun loadNextBatch(cursor: String, size: Int) =
orderRepository.findPendingOrders(cursor, size)
}
val processor = BatchJobProcessor(
iterator = OrderIterator(),
submitJob = { order -> sendToKafka(order) },
onSuccess = { order, result -> markProcessed(order.id) }
)
processor.run() // Processes all orders asynchronously!🆕 Try the Example
git clone https://github.com/thisKK/taskrunna-framework.git
cd taskrunna-framework
./gradlew :taskrunna-examples:run
# Visit http://localhost:8080 for web interface
# Visit http://localhost:8080/metrics for Prometheus metrics⚠️ Breaking Changes
Upgrading from v1.0.0? Update your imports:
// Before
import com.taskrunna.core.BaseBatchIterator
// After
import com.taskrunna.batch.BaseBatchIterator📊 Perfect For
- Microservices with batch processing needs
- Data pipelines requiring async execution
- Systems needing production-ready observability
- Teams who want simple, powerful tools
Installation: README.md | Documentation: Full Docs | Changes: CHANGELOG.md
🚀 TaskRunna v1.1.0 - One package, endless possibilities!
Full Changelog: https://github.com/thisKK/taskrunna-framework/commits/v1.1.0