mirror of https://github.com/usbharu/Hideout.git
doc: ドキュメントを追加
This commit is contained in:
parent
4e7600d3bf
commit
3315fe20e1
|
@ -16,7 +16,11 @@
|
||||||
|
|
||||||
package dev.usbharu.owl.common.property
|
package dev.usbharu.owl.common.property
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [Set]でカスタマイズできる[PropertySerializerFactory]
|
||||||
|
*
|
||||||
|
* @property propertySerializers [PropertySerializer]の[Set]
|
||||||
|
*/
|
||||||
open class CustomPropertySerializerFactory(private val propertySerializers: Set<PropertySerializer<*>>) :
|
open class CustomPropertySerializerFactory(private val propertySerializers: Set<PropertySerializer<*>>) :
|
||||||
PropertySerializerFactory {
|
PropertySerializerFactory {
|
||||||
override fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T> {
|
override fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T> {
|
||||||
|
|
|
@ -16,10 +16,41 @@
|
||||||
|
|
||||||
package dev.usbharu.owl.common.property
|
package dev.usbharu.owl.common.property
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [PropertyValue]をシリアライズ・デシリアライズします
|
||||||
|
*
|
||||||
|
* @param T [PropertyValue]の型
|
||||||
|
*/
|
||||||
interface PropertySerializer<T> {
|
interface PropertySerializer<T> {
|
||||||
|
/**
|
||||||
|
* [PropertyValue]をサポートしているかを確認します
|
||||||
|
*
|
||||||
|
* @param propertyValue 確認する[PropertyValue]
|
||||||
|
* @return サポートしている場合true
|
||||||
|
*/
|
||||||
fun isSupported(propertyValue: PropertyValue<*>): Boolean
|
fun isSupported(propertyValue: PropertyValue<*>): Boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* シリアライズ済みの[PropertyValue]から[PropertyValue]をサポートしているかを確認します
|
||||||
|
*
|
||||||
|
* @param string 確認するシリアライズ済みの[PropertyValue]
|
||||||
|
* @return サポートしている場合true
|
||||||
|
*/
|
||||||
fun isSupported(string: String): Boolean
|
fun isSupported(string: String): Boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [PropertyValue]をシリアライズします
|
||||||
|
*
|
||||||
|
* @param propertyValue シリアライズする[PropertyValue]
|
||||||
|
* @return シリアライズ済みの[PropertyValue]
|
||||||
|
*/
|
||||||
fun serialize(propertyValue: PropertyValue<*>): String
|
fun serialize(propertyValue: PropertyValue<*>): String
|
||||||
|
|
||||||
|
/**
|
||||||
|
* デシリアライズします
|
||||||
|
*
|
||||||
|
* @param string シリアライズ済みの[PropertyValue]
|
||||||
|
* @return デシリアライズされた[PropertyValue]
|
||||||
|
*/
|
||||||
fun deserialize(string: String): PropertyValue<T>
|
fun deserialize(string: String): PropertyValue<T>
|
||||||
}
|
}
|
|
@ -16,7 +16,25 @@
|
||||||
|
|
||||||
package dev.usbharu.owl.common.property
|
package dev.usbharu.owl.common.property
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [PropertyValue]のシリアライザーのファクトリ
|
||||||
|
*
|
||||||
|
*/
|
||||||
interface PropertySerializerFactory {
|
interface PropertySerializerFactory {
|
||||||
|
/**
|
||||||
|
* [PropertyValue]からシリアライザーを作成します
|
||||||
|
*
|
||||||
|
* @param T [PropertyValue]の型
|
||||||
|
* @param propertyValue シリアライザーを作成する[PropertyValue]
|
||||||
|
* @return 作成されたシリアライザー
|
||||||
|
*/
|
||||||
fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T>
|
fun <T> factory(propertyValue: PropertyValue<T>): PropertySerializer<T>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* シリアライズ済みの[PropertyValue]からシリアライザーを作成します
|
||||||
|
*
|
||||||
|
* @param string シリアライズ済みの[PropertyValue]
|
||||||
|
* @return 作成されたシリアライザー
|
||||||
|
*/
|
||||||
fun factory(string: String): PropertySerializer<*>
|
fun factory(string: String): PropertySerializer<*>
|
||||||
}
|
}
|
|
@ -26,6 +26,19 @@ import org.slf4j.LoggerFactory
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Consumer
|
||||||
|
*
|
||||||
|
* @property subscribeTaskStub
|
||||||
|
* @property assignmentTaskStub
|
||||||
|
* @property taskResultStub
|
||||||
|
* @property runnerMap
|
||||||
|
* @property propertySerializerFactory
|
||||||
|
* @constructor
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @param consumerConfig
|
||||||
|
*/
|
||||||
class Consumer(
|
class Consumer(
|
||||||
private val subscribeTaskStub: SubscribeTaskServiceGrpcKt.SubscribeTaskServiceCoroutineStub,
|
private val subscribeTaskStub: SubscribeTaskServiceGrpcKt.SubscribeTaskServiceCoroutineStub,
|
||||||
private val assignmentTaskStub: AssignmentTaskServiceGrpcKt.AssignmentTaskServiceCoroutineStub,
|
private val assignmentTaskStub: AssignmentTaskServiceGrpcKt.AssignmentTaskServiceCoroutineStub,
|
||||||
|
@ -41,6 +54,13 @@ class Consumer(
|
||||||
|
|
||||||
private val concurrent = MutableStateFlow(consumerConfig.concurrent)
|
private val concurrent = MutableStateFlow(consumerConfig.concurrent)
|
||||||
private val processing = MutableStateFlow(0)
|
private val processing = MutableStateFlow(0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Consumerを初期化します
|
||||||
|
*
|
||||||
|
* @param name Consumer名
|
||||||
|
* @param hostname Consumerのホスト名
|
||||||
|
*/
|
||||||
suspend fun init(name: String, hostname: String) {
|
suspend fun init(name: String, hostname: String) {
|
||||||
logger.info("Initialize Consumer name: {} hostname: {}", name, hostname)
|
logger.info("Initialize Consumer name: {} hostname: {}", name, hostname)
|
||||||
logger.debug("Registered Tasks: {}", runnerMap.keys)
|
logger.debug("Registered Tasks: {}", runnerMap.keys)
|
||||||
|
@ -52,6 +72,10 @@ class Consumer(
|
||||||
logger.info("Success initialize consumer. ConsumerID: {}", consumerId)
|
logger.info("Success initialize consumer. ConsumerID: {}", consumerId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* タスクの受付を開始します
|
||||||
|
*
|
||||||
|
*/
|
||||||
suspend fun start() {
|
suspend fun start() {
|
||||||
coroutineScope = CoroutineScope(Dispatchers.Default)
|
coroutineScope = CoroutineScope(Dispatchers.Default)
|
||||||
coroutineScope {
|
coroutineScope {
|
||||||
|
@ -138,6 +162,10 @@ class Consumer(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* タスクの受付を停止します
|
||||||
|
*
|
||||||
|
*/
|
||||||
fun stop() {
|
fun stop() {
|
||||||
logger.info("Stop Consumer. consumerID: {}", consumerId)
|
logger.info("Stop Consumer. consumerID: {}", consumerId)
|
||||||
coroutineScope.cancel()
|
coroutineScope.cancel()
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
|
|
||||||
package dev.usbharu.owl.consumer
|
package dev.usbharu.owl.consumer
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Consumerの構成
|
||||||
|
*
|
||||||
|
* @property concurrent Consumerのワーカーの同時実行数
|
||||||
|
*/
|
||||||
data class ConsumerConfig(
|
data class ConsumerConfig(
|
||||||
val concurrent: Int
|
val concurrent: Int
|
||||||
)
|
)
|
||||||
|
|
|
@ -20,6 +20,15 @@ import dev.usbharu.owl.common.property.PropertyValue
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
/**
|
||||||
|
* タスクをConsumerに要求します
|
||||||
|
*
|
||||||
|
* @property name タスク名
|
||||||
|
* @property id タスクID
|
||||||
|
* @property attempt 試行回数
|
||||||
|
* @property queuedAt タスクがキューに入れられた時間
|
||||||
|
* @property properties タスクに渡されたパラメータ
|
||||||
|
*/
|
||||||
data class TaskRequest(
|
data class TaskRequest(
|
||||||
val name:String,
|
val name:String,
|
||||||
val id:UUID,
|
val id:UUID,
|
||||||
|
|
|
@ -16,7 +16,21 @@
|
||||||
|
|
||||||
package dev.usbharu.owl.consumer
|
package dev.usbharu.owl.consumer
|
||||||
|
|
||||||
|
/**
|
||||||
|
* タスクを実行するランナー
|
||||||
|
*
|
||||||
|
*/
|
||||||
interface TaskRunner {
|
interface TaskRunner {
|
||||||
|
/**
|
||||||
|
* 実行するタスク名
|
||||||
|
*/
|
||||||
val name: String
|
val name: String
|
||||||
|
|
||||||
|
/**
|
||||||
|
* タスクを実行する
|
||||||
|
*
|
||||||
|
* @param taskRequest 実行するタスク
|
||||||
|
* @return タスク実行結果
|
||||||
|
*/
|
||||||
suspend fun run(taskRequest: TaskRequest): TaskResult
|
suspend fun run(taskRequest: TaskRequest): TaskResult
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl
|
package dev.usbharu.owl.producer.defaultimpl
|
||||||
|
|
||||||
import com.google.protobuf.timestamp
|
import com.google.protobuf.timestamp
|
||||||
import dev.usbharu.owl.*
|
import dev.usbharu.owl.*
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl
|
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl
|
||||||
|
|
||||||
import dev.usbharu.owl.producer.api.OwlProducerBuilder
|
import dev.usbharu.owl.producer.api.OwlProducerBuilder
|
||||||
|
import dev.usbharu.owl.producer.defaultimpl.DefaultOwlProducer
|
||||||
|
import dev.usbharu.owl.producer.defaultimpl.DefaultOwlProducerConfig
|
||||||
import io.grpc.ManagedChannelBuilder
|
import io.grpc.ManagedChannelBuilder
|
||||||
|
|
||||||
class DefaultOwlProducerBuilder : OwlProducerBuilder<DefaultOwlProducer, DefaultOwlProducerConfig> {
|
class DefaultOwlProducerBuilder : OwlProducerBuilder<DefaultOwlProducer, DefaultOwlProducerConfig> {
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package dev.usbharu.dev.usbharu.owl.producer.defaultimpl
|
package dev.usbharu.owl.producer.defaultimpl
|
||||||
|
|
||||||
import dev.usbharu.owl.common.property.PropertySerializerFactory
|
import dev.usbharu.owl.common.property.PropertySerializerFactory
|
||||||
import dev.usbharu.owl.producer.api.OwlProducerConfig
|
import dev.usbharu.owl.producer.api.OwlProducerConfig
|
||||||
|
|
Loading…
Reference in New Issue