From 22b0611d9c00e70f4b70787e314075afcd4538ec Mon Sep 17 00:00:00 2001 From: Supriyo Date: Sat, 16 Mar 2024 12:36:48 +0530 Subject: feat: refractor mqtt utils to MqttClient like EmqxClient --- src/main/java/org/traccar/helper/MqttUtil.java | 81 -------------------------- 1 file changed, 81 deletions(-) delete mode 100644 src/main/java/org/traccar/helper/MqttUtil.java (limited to 'src/main/java/org/traccar/helper') diff --git a/src/main/java/org/traccar/helper/MqttUtil.java b/src/main/java/org/traccar/helper/MqttUtil.java deleted file mode 100644 index 9fc16012f..000000000 --- a/src/main/java/org/traccar/helper/MqttUtil.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2023 Anton Tananaev (anton@traccar.org) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.traccar.helper; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.UUID; -import java.util.function.BiConsumer; - -import com.hivemq.client.mqtt.datatypes.MqttQos; -import com.hivemq.client.mqtt.mqtt5.Mqtt5AsyncClient; -import com.hivemq.client.mqtt.mqtt5.Mqtt5Client; -import com.hivemq.client.mqtt.mqtt5.Mqtt5ClientBuilder; -import com.hivemq.client.mqtt.mqtt5.message.auth.Mqtt5SimpleAuth; -import com.hivemq.client.mqtt.mqtt5.message.publish.Mqtt5PublishResult; - -public final class MqttUtil { - - private MqttUtil() { - - } - - public static Mqtt5AsyncClient createClient(final String url) { - URI uri; - try { - uri = new URI(url); - } catch (URISyntaxException e) { - throw new RuntimeException(e); - } - - Mqtt5SimpleAuth simpleAuth = getSimpleAuth(uri); - - String host = uri.getHost(); - int port = uri.getPort(); - Mqtt5ClientBuilder builder = Mqtt5Client.builder().identifier("traccar-" + UUID.randomUUID()) - .serverHost(host).serverPort(port).simpleAuth(simpleAuth).automaticReconnectWithDefaultConfig(); - Mqtt5AsyncClient client; - client = builder.buildAsync(); - client.connectWith().send().whenComplete((message, e) -> { - throw new RuntimeException(e); - }); - - return client; - } - - private static Mqtt5SimpleAuth getSimpleAuth(final URI uri) { - String userInfo = uri.getUserInfo(); - Mqtt5SimpleAuth simpleAuth = null; - if (userInfo != null) { - int delimiter = userInfo.indexOf(':'); - if (delimiter == -1) { - throw new IllegalArgumentException("Wrong MQTT credentials. Should be in format \"username:password\""); - } else { - simpleAuth = Mqtt5SimpleAuth.builder().username(userInfo.substring(0, delimiter++)) - .password(userInfo.substring(delimiter).getBytes()).build(); - } - } - return simpleAuth; - } - - public static void publish(final Mqtt5AsyncClient client, final String pubTopic, final String payload, - final BiConsumer whenComplete) { - client.publishWith().topic(pubTopic).qos(MqttQos.AT_LEAST_ONCE).payload(payload.getBytes()).send() - .whenComplete(whenComplete); - } - -} -- cgit v1.2.3