Added MQTT actor

This commit is contained in:
2026-07-19 01:45:49 +03:00
parent a004c1a97e
commit 9bfee2978e
5 changed files with 103 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
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()
}
}