From 650e964e489d68f4557817020e8ac7d9a6b67f7e Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Mon, 31 Mar 2025 01:39:57 +0200 Subject: [PATCH] configure rabbitMQ ConnectionFactory --- .../configuration/injection/ConfigureDI.kt | 8 ++++++++ .../injection/ConfigureDIInfrastructure.kt | 11 +++++++++++ .../eventDemo/configuration/ktor/ConfigureKoin.kt | 7 +++++++ src/main/resources/application.conf | 14 ++++++++++++++ 4 files changed, 40 insertions(+) diff --git a/src/main/kotlin/eventDemo/configuration/injection/ConfigureDI.kt b/src/main/kotlin/eventDemo/configuration/injection/ConfigureDI.kt index 5b22105..a62be93 100644 --- a/src/main/kotlin/eventDemo/configuration/injection/ConfigureDI.kt +++ b/src/main/kotlin/eventDemo/configuration/injection/ConfigureDI.kt @@ -13,10 +13,18 @@ fun appKoinModule(config: Configuration) = data class Configuration( val redisUrl: String, val postgresql: Postgresql, + val rabbitmq: RabbitMQ, ) { data class Postgresql( val url: String, val username: String, val password: String, ) + + data class RabbitMQ( + val url: String, + val port: Int, + val username: String, + val password: String, + ) } diff --git a/src/main/kotlin/eventDemo/configuration/injection/ConfigureDIInfrastructure.kt b/src/main/kotlin/eventDemo/configuration/injection/ConfigureDIInfrastructure.kt index 4e10e36..a04602b 100644 --- a/src/main/kotlin/eventDemo/configuration/injection/ConfigureDIInfrastructure.kt +++ b/src/main/kotlin/eventDemo/configuration/injection/ConfigureDIInfrastructure.kt @@ -1,5 +1,6 @@ package eventDemo.configuration.injection +import com.rabbitmq.client.ConnectionFactory import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource import eventDemo.adapter.infrastructureLayer.event.GameEventBusInMemory @@ -38,6 +39,16 @@ fun Module.configureDIInfrastructure(config: Configuration) { } } bind DataSource::class + single { + ConnectionFactory().apply { + host = config.rabbitmq.url + port = config.rabbitmq.port + virtualHost = virtualHost + username = config.rabbitmq.username + password = config.rabbitmq.password + } + } + singleOf(::GameEventBusInMemory) bind GameEventBus::class singleOf(::GameEventStoreInPostgresql) bind GameEventStore::class singleOf(::GameProjectionBusInMemory) bind GameProjectionBus::class diff --git a/src/main/kotlin/eventDemo/configuration/ktor/ConfigureKoin.kt b/src/main/kotlin/eventDemo/configuration/ktor/ConfigureKoin.kt index 1486d87..870077b 100644 --- a/src/main/kotlin/eventDemo/configuration/ktor/ConfigureKoin.kt +++ b/src/main/kotlin/eventDemo/configuration/ktor/ConfigureKoin.kt @@ -29,6 +29,13 @@ fun ApplicationConfig.configuration() = username = getProperty("postgresql.username"), password = getProperty("postgresql.password"), ), + rabbitmq = + Configuration.RabbitMQ( + url = getProperty("rabbitmq.url"), + port = getProperty("rabbitmq.port").toInt(), + username = getProperty("rabbitmq.username"), + password = getProperty("rabbitmq.password"), + ), ) private fun ApplicationConfig.getProperty(path: String): String = diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index a758dcc..69b6a46 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -26,4 +26,18 @@ postgresql { password = "changeit" password = ${?POSTGRESQL_PASSWORD} +} + +rabbitmq { + url = "localhost" + url = ${?RABBITMQ_URL} + + port = "5672" + port = ${?RABBITMQ_PORT} + + username = "event-demo" + username = ${?RABBITMQ_USERNAME} + + password = "changeit" + password = ${?RABBITMQ_PASSWORD} } \ No newline at end of file