37 lines
1.2 KiB
Scala
37 lines
1.2 KiB
Scala
package mqttClient
|
|
|
|
import com.google.inject.{AbstractModule, Provides}
|
|
import com.hivemq.client.mqtt.mqtt5.{Mqtt5AsyncClient, Mqtt5Client}
|
|
import jakarta.inject.Inject
|
|
import play.api.libs.concurrent.PekkoGuiceSupport
|
|
import play.api.{Configuration, Logging}
|
|
|
|
import java.nio.charset.StandardCharsets
|
|
|
|
class Module extends AbstractModule with PekkoGuiceSupport with Logging {
|
|
override def configure(): Unit = {
|
|
bindTypedActor(MessageProcessorActor, "mqtt-message-processor-actor")
|
|
bind(classOf[MessageProcessorActor.Reg]).asEagerSingleton()
|
|
}
|
|
|
|
@Provides
|
|
def mqtt5Client(config: Configuration): Mqtt5AsyncClient = {
|
|
val mqttConfig = config.get[Configuration]("mqtt")
|
|
|
|
var builder = Mqtt5Client.builder()
|
|
.identifier(mqttConfig.get[String]("clientId"))
|
|
.serverHost(mqttConfig.get[String]("host"))
|
|
.serverPort(mqttConfig.get("port"))
|
|
|
|
mqttConfig.getOptional[String]("username").foreach{username =>
|
|
val password = mqttConfig.get[String]("password").getBytes(StandardCharsets.US_ASCII)
|
|
builder = builder.simpleAuth()
|
|
.username(username)
|
|
.password(password)
|
|
.applySimpleAuth()
|
|
}
|
|
|
|
builder.buildAsync()
|
|
}
|
|
}
|