diff options
author | Rodolfo Silva <contato@rodolfosilva.com> | 2023-07-19 22:42:16 -0300 |
---|---|---|
committer | Rodolfo Silva <contato@rodolfosilva.com> | 2023-07-19 22:42:16 -0300 |
commit | dacaefcd4e416eeeedf1074729a8670aec1e53fb (patch) | |
tree | 73b6fde37946800e1b1ef68773f3eb8e31d9f4d1 /src/main/java/org/traccar/forward/PositionForwarderAmqp.java | |
parent | 8970e5ad49cbe9ad2ec106b2140cfc9f276ef7de (diff) | |
download | trackermap-server-dacaefcd4e416eeeedf1074729a8670aec1e53fb.tar.gz trackermap-server-dacaefcd4e416eeeedf1074729a8670aec1e53fb.tar.bz2 trackermap-server-dacaefcd4e416eeeedf1074729a8670aec1e53fb.zip |
refactor the amqp client logic to have a separated class
Diffstat (limited to 'src/main/java/org/traccar/forward/PositionForwarderAmqp.java')
-rw-r--r-- | src/main/java/org/traccar/forward/PositionForwarderAmqp.java | 48 |
1 files changed, 8 insertions, 40 deletions
diff --git a/src/main/java/org/traccar/forward/PositionForwarderAmqp.java b/src/main/java/org/traccar/forward/PositionForwarderAmqp.java index ea9e5c370..3996bda15 100644 --- a/src/main/java/org/traccar/forward/PositionForwarderAmqp.java +++ b/src/main/java/org/traccar/forward/PositionForwarderAmqp.java @@ -15,63 +15,31 @@ */ package org.traccar.forward; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.rabbitmq.client.AMQP.BasicProperties; -import com.rabbitmq.client.Channel; -import com.rabbitmq.client.Connection; -import com.rabbitmq.client.ConnectionFactory; + import org.traccar.config.Config; import org.traccar.config.Keys; import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.util.Properties; -import java.util.concurrent.TimeoutException; public class PositionForwarderAmqp implements PositionForwarder { - private final Channel channel; + private final AmqpClient amqpClient; private final ObjectMapper objectMapper; - private final String exchange; - private final String topic; - public PositionForwarderAmqp(Config config, ObjectMapper objectMapper) { - ConnectionFactory factory = new ConnectionFactory(); - try { - factory.setUri(config.getString(Keys.FORWARD_URL)); - } catch (NoSuchAlgorithmException | URISyntaxException | KeyManagementException e) { - throw new RuntimeException(e); - } - - try { - Connection connection = factory.newConnection(); - topic = config.getString(Keys.FORWARD_TOPIC); - exchange = config.getString(Keys.EVENT_FORWARD_EXCHANGE); - channel = connection.createChannel(); - channel.exchangeDeclare(exchange, "topic", true); - this.objectMapper = objectMapper; - } catch (IOException | TimeoutException e) { - throw new RuntimeException(e); - } + String connectionUrl = config.getString(Keys.FORWARD_URL); + String exchange = config.getString(Keys.FORWARD_EXCHANGE); + String topic = config.getString(Keys.FORWARD_TOPIC); + amqpClient = new AmqpClient(connectionUrl, exchange, topic); + this.objectMapper = objectMapper; } @Override public void forward(PositionData positionData, ResultHandler resultHandler) { try { String value = objectMapper.writeValueAsString(positionData); - - BasicProperties properties = new BasicProperties.Builder() - .contentType("application/json") - .contentEncoding("string") - .deliveryMode(2) - .priority(10) - .build(); - - channel.basicPublish(exchange, topic, properties, value.getBytes()); + amqpClient.publishMessage(value); resultHandler.onResult(true, null); } catch (IOException e) { resultHandler.onResult(false, e); |