refactor
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-05-22 04:24:15 +02:00
parent 03a06728bb
commit d77b1508a3
3 changed files with 88 additions and 39 deletions

View File

@@ -1,53 +1,26 @@
package worker
import com.google.gson.Gson
import com.rabbitmq.client.BuiltinExchangeType
import com.rabbitmq.client.ConnectionFactory
import model.OutputModel
import com.viartemev.thewhiterabbit.channel.channel
import com.viartemev.thewhiterabbit.channel.consume
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlin.random.Random
import config.EnvConfig
import com.rabbitmq.client.*
import consumer.GlueConsumer
class Glue {
var mqHost: String = System.getenv("MQ_HOST") ?: "localhost"
var mqUserName: String = System.getenv("MQ_USERNAME") ?: "rabbitmq"
var mqPassWord: String = System.getenv("MQ_PASSWORD") ?: "rabbitmq"
var mqInputExchange: String = System.getenv("MQ_IN_EXCHANGE") ?: "input"
var mqOutputExchange: String = System.getenv("MQ_OUT_EXCHANGE") ?: "output"
val gson = Gson()
val envConfig = EnvConfig()
fun recieve(){
val factory = ConnectionFactory()
factory.host = mqHost
factory.username = mqUserName
factory.password = mqPassWord
factory.host = envConfig.mqHost
factory.username = envConfig.mqUserName
factory.password = envConfig.mqPassWord
val inputConnection = factory.newConnection()
val inputChannel = inputConnection.createChannel()
inputChannel.exchangeDeclare(mqInputExchange, BuiltinExchangeType.FANOUT)
inputChannel.exchangeDeclare(envConfig.mqInputExchange, BuiltinExchangeType.FANOUT)
val inputQueueName = inputChannel.queueDeclare().queue
inputChannel.queueBind(inputQueueName, mqInputExchange, "")
inputChannel.queueBind(inputQueueName, envConfig.mqInputExchange, "")
val outputConnection = factory.newConnection()
val outputChannel = outputConnection.createChannel()
outputChannel.exchangeDeclare(mqOutputExchange, BuiltinExchangeType.FANOUT)
GlobalScope.launch(Dispatchers.Default) {
inputConnection.channel {
consume(inputQueueName) {
consumeMessageWithConfirm({
val rawJson = String(it.body)
println(rawJson)
val probability = Random.nextDouble(0.0,1.0)
val outputObject = OutputModel(tag=rawJson, probability=probability)
outputChannel.basicPublish(mqOutputExchange,"", null, gson.toJson(outputObject).toByteArray())
})
}
}
}
inputChannel.basicConsume(envConfig.mqInputExchange, true, GlueConsumer())
}
}