Skip to content
This repository has been archived by the owner on Sep 9, 2022. It is now read-only.

dimensional-archive/Kyu-RKT

Repository files navigation

RKT version badge

Utilities for using rabbitmq java client in Kotlin, this was made with the amqp broker in mind.

The API is inspired by Spec-tacles JS

Installation

Groovy
repositories {
  maven { url 'https://dimensional.jfrog.io/artifactory/maven' }
}

dependencies {
  implementation 'com.kyubot:rkt:VERSION'
}
Kotlin
repositories {
  maven("https://dimensional.jfrog.io/artifactory/maven")
}

dependencies {
  implementation("com.kyubot:rkt:VERSION")
}

Usage

This is pretty WIP

Setup
import com.kyubot.rkt.Amqp

fun main() {
  val broker = Amqp {
    group("main")

    // or for a sub group
    group("main".."sub")
  }
  
  broker.connect()
}
Basic Publish & Consume
import com.kyubot.rkt.Queue

fun main() {
  // subscribe to some events.
  broker.on<Hello> {
    ack()
    println(data.content) // World
  }

  // in another project or something
  broker.publish(Hello("World"))
}

@Queue("hello")
@JvmInline
value class Hello(val content: String)
Data Callback
import com.kyubot.rkt.Queue
import com.kyubot.rkt.Callable

fun main() {
  // call some data
  val result = broker.call(Operation("add")).await()
  println(result.num)
}

@Queue("operation")
data class Operation(val name: String) : Callable<Operation.Result> {
  data class Result(val num: Int)
}

Kyu Discord