package wf.servitor.common import org.apache.activemq.artemis.api.core.client.ActiveMQClient import org.apache.activemq.artemis.api.core.client.ClientSession import org.apache.activemq.artemis.api.core.client.ClientSessionFactory import org.apache.activemq.artemis.api.core.client.ServerLocator import org.koin.core.qualifier.named import org.koin.core.scope.Scope import org.koin.dsl.module import wf.servitor.common.config.Config import wf.servitor.common.config.createConfig import wf.servitor.common.event.Session fun Scope.config(): Config = get() val commonModule = module { single { createConfig(getOrNull(named("argument.config"))) } single { ActiveMQClient.createServerLocator(config().queue.url) } single { get().createSessionFactory() } single { val serverLocator: ServerLocator = get() val config = config().queue get().createSession( config.username, config.password, false, true, true, false, serverLocator.ackBatchSize ) } single { get().createProducer() } single(named("queue.task")) { Session(get(), config().queue.names.taskQueue) } }