From 284fc9bd31c2b15eace1e2645c7cbe7c12738d72 Mon Sep 17 00:00:00 2001 From: Arkadiy Date: Sat, 12 Jul 2025 17:59:54 +0400 Subject: [PATCH 1/2] feat: make BridgePacketSerializerHelper instead of ByteBuffer wrapper --- .../bridge/network/AbstractBridgeNetwork.java | 12 +- .../bridge/network/BridgeNetwork.java | 8 +- .../bridge/network/codec/BridgeCodec.java | 15 ++- .../codec/packet/BridgeUnknownPacket.java | 23 ++-- .../serializer/BridgePacketSerializer.java | 6 +- .../BridgePacketSerializerHelper.java | 117 +++++++++++++++++ .../luminiadev/bridge/util/ByteBuffer.java | 121 ------------------ .../{ByteBufVarInts.java => VarInts.java} | 2 +- .../bridge/network/BridgeRabbitMQConfig.java | 2 - .../bridge/network/BridgeRabbitMQNetwork.java | 27 ++-- 10 files changed, 169 insertions(+), 164 deletions(-) create mode 100644 bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializerHelper.java delete mode 100644 bridge-common/src/main/java/com/luminiadev/bridge/util/ByteBuffer.java rename bridge-common/src/main/java/com/luminiadev/bridge/util/{ByteBufVarInts.java => VarInts.java} (99%) diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/network/AbstractBridgeNetwork.java b/bridge-common/src/main/java/com/luminiadev/bridge/network/AbstractBridgeNetwork.java index 39b2c8f..a968172 100644 --- a/bridge-common/src/main/java/com/luminiadev/bridge/network/AbstractBridgeNetwork.java +++ b/bridge-common/src/main/java/com/luminiadev/bridge/network/AbstractBridgeNetwork.java @@ -2,13 +2,15 @@ import com.luminiadev.bridge.exception.BridgeCodecException; import com.luminiadev.bridge.network.codec.BridgeCodec; -import com.luminiadev.bridge.network.codec.packet.handler.BridgePacketHandler; import com.luminiadev.bridge.network.codec.packet.BridgePacket; -import com.luminiadev.bridge.util.ByteBuffer; +import com.luminiadev.bridge.network.codec.packet.handler.BridgePacketHandler; +import io.netty.buffer.ByteBuf; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; -import java.util.*; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; public abstract class AbstractBridgeNetwork implements BridgeNetwork { @@ -41,7 +43,7 @@ public void removePacketHandler(BridgePacketHandler handler) { } @Override - public BridgePacket tryDecode(ByteBuffer buffer, String packetId) { + public BridgePacket tryDecode(ByteBuf buffer, String packetId) { if (codec == null) { throw new BridgeCodecException("Codec is not set"); } @@ -49,7 +51,7 @@ public BridgePacket tryDecode(ByteBuffer buffer, String packetId) { } @Override - public void tryEncode(ByteBuffer buffer, T packet) { + public void tryEncode(ByteBuf buffer, T packet) { if (codec == null) { throw new BridgeCodecException("Codec is not set"); } diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/network/BridgeNetwork.java b/bridge-common/src/main/java/com/luminiadev/bridge/network/BridgeNetwork.java index 9d0fed4..2f24f29 100644 --- a/bridge-common/src/main/java/com/luminiadev/bridge/network/BridgeNetwork.java +++ b/bridge-common/src/main/java/com/luminiadev/bridge/network/BridgeNetwork.java @@ -1,9 +1,9 @@ package com.luminiadev.bridge.network; import com.luminiadev.bridge.network.codec.BridgeCodec; -import com.luminiadev.bridge.network.codec.packet.handler.BridgePacketHandler; import com.luminiadev.bridge.network.codec.packet.BridgePacket; -import com.luminiadev.bridge.util.ByteBuffer; +import com.luminiadev.bridge.network.codec.packet.handler.BridgePacketHandler; +import io.netty.buffer.ByteBuf; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; @@ -25,9 +25,9 @@ public interface BridgeNetwork { void sendPacket(T packet); - BridgePacket tryDecode(ByteBuffer buffer, String packetId); + BridgePacket tryDecode(ByteBuf buffer, String packetId); - void tryEncode(ByteBuffer buffer, T packet); + void tryEncode(ByteBuf buffer, T packet); void start(); diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/BridgeCodec.java b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/BridgeCodec.java index 40daff8..334f659 100644 --- a/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/BridgeCodec.java +++ b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/BridgeCodec.java @@ -6,7 +6,8 @@ import com.luminiadev.bridge.network.codec.packet.BridgePacketFactory; import com.luminiadev.bridge.network.codec.packet.BridgeUnknownPacket; import com.luminiadev.bridge.network.codec.packet.serializer.BridgePacketSerializer; -import com.luminiadev.bridge.util.ByteBuffer; +import com.luminiadev.bridge.network.codec.packet.serializer.BridgePacketSerializerHelper; +import io.netty.buffer.ByteBuf; import org.jetbrains.annotations.Nullable; import java.util.HashMap; @@ -49,8 +50,9 @@ public void unregisterPacket(String packetId) { } @SuppressWarnings({"unchecked", "rawtypes"}) - public BridgePacket tryDecode(ByteBuffer buffer, String packetId) { + public BridgePacket tryDecode(ByteBuf buffer, String packetId) { BridgePacketDefinition definition = this.getPacketDefinition(packetId); + BridgePacketSerializerHelper helper = new BridgePacketSerializerHelper(buffer); BridgePacket packet; BridgePacketSerializer serializer; @@ -65,12 +67,14 @@ public BridgePacket tryDecode(ByteBuffer buffer, String packetId) { serializer = (BridgePacketSerializer) new BridgeUnknownPacket.BridgeUnknownPacketSerializer(); } - serializer.deserialize(buffer, packet); + serializer.deserialize(buffer, helper, packet); return packet; } @SuppressWarnings("unchecked") - public void tryEncode(ByteBuffer buffer, T packet) { + public void tryEncode(ByteBuf buffer, T packet) { + BridgePacketSerializerHelper helper = new BridgePacketSerializerHelper(buffer); + BridgePacketSerializer serializer; if (packet instanceof BridgeUnknownPacket) { serializer = (BridgePacketSerializer) new BridgeUnknownPacket.BridgeUnknownPacketSerializer(); @@ -81,7 +85,8 @@ public void tryEncode(ByteBuffer buffer, T packet) { } serializer = definition.getSerializer(); } - serializer.serialize(buffer, packet); + + serializer.serialize(buffer, helper, packet); } public Builder toBuilder() { diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/BridgeUnknownPacket.java b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/BridgeUnknownPacket.java index b40eee7..fba96f0 100644 --- a/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/BridgeUnknownPacket.java +++ b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/BridgeUnknownPacket.java @@ -1,17 +1,18 @@ package com.luminiadev.bridge.network.codec.packet; import com.luminiadev.bridge.network.codec.packet.serializer.BridgePacketSerializer; -import com.luminiadev.bridge.util.ByteBuffer; -import org.jetbrains.annotations.NotNull; +import com.luminiadev.bridge.network.codec.packet.serializer.BridgePacketSerializerHelper; +import io.netty.buffer.ByteBuf; import lombok.Data; import lombok.EqualsAndHashCode; +import org.jetbrains.annotations.NotNull; @Data @EqualsAndHashCode(doNotUseGetters = true) public final class BridgeUnknownPacket implements BridgePacket { private String originalId; - private ByteBuffer originalPayload; + private ByteBuf originalPayload; @Override public @NotNull String getId() { @@ -21,19 +22,15 @@ public final class BridgeUnknownPacket implements BridgePacket { public static final class BridgeUnknownPacketSerializer implements BridgePacketSerializer { @Override - public void serialize(ByteBuffer buffer, BridgeUnknownPacket packet) { - buffer.writeString(packet.getOriginalId()); - buffer.writeBytes( - packet.getOriginalPayload().byteBuf(), - packet.getOriginalPayload().readerIndex(), - packet.getOriginalPayload().readableBytes() - ); + public void serialize(ByteBuf buffer, BridgePacketSerializerHelper helper, BridgeUnknownPacket packet) { + helper.writeString(packet.originalId); + buffer.writeBytes(packet.originalPayload, packet.originalPayload.readerIndex(), packet.originalPayload.readableBytes()); } @Override - public void deserialize(ByteBuffer buffer, BridgeUnknownPacket packet) { - packet.setOriginalId(buffer.readString()); - packet.setOriginalPayload(ByteBuffer.of(buffer.readRetainedSlice(buffer.readableBytes()))); + public void deserialize(ByteBuf buffer, BridgePacketSerializerHelper helper, BridgeUnknownPacket packet) { + packet.setOriginalId(helper.readString()); + packet.setOriginalPayload(buffer.readRetainedSlice(buffer.readableBytes())); } } } diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializer.java b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializer.java index 7cb8eba..8c30854 100644 --- a/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializer.java +++ b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializer.java @@ -1,11 +1,11 @@ package com.luminiadev.bridge.network.codec.packet.serializer; import com.luminiadev.bridge.network.codec.packet.BridgePacket; -import com.luminiadev.bridge.util.ByteBuffer; +import io.netty.buffer.ByteBuf; public interface BridgePacketSerializer { - void serialize(ByteBuffer buffer, T packet); + void serialize(ByteBuf buffer, BridgePacketSerializerHelper helper, T packet); - void deserialize(ByteBuffer buffer, T packet); + void deserialize(ByteBuf buffer, BridgePacketSerializerHelper helper, T packet); } diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializerHelper.java b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializerHelper.java new file mode 100644 index 0000000..13ed0bc --- /dev/null +++ b/bridge-common/src/main/java/com/luminiadev/bridge/network/codec/packet/serializer/BridgePacketSerializerHelper.java @@ -0,0 +1,117 @@ +package com.luminiadev.bridge.network.codec.packet.serializer; + +import com.luminiadev.bridge.util.VarInts; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; +import lombok.AllArgsConstructor; + +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.UUID; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.function.ObjIntConsumer; +import java.util.function.ToLongFunction; + +@AllArgsConstructor +public final class BridgePacketSerializerHelper { + + private final ByteBuf buffer; + + public String readString() { + int length = this.readUnsignedVarInt(); + return (String) buffer.readCharSequence(length, StandardCharsets.UTF_8); + } + + public void writeString(String string) { + this.writeUnsignedVarInt(ByteBufUtil.utf8Bytes(string)); + buffer.writeCharSequence(string, StandardCharsets.UTF_8); + } + + public UUID readUuid() { + return new UUID(buffer.readLongLE(), buffer.readLongLE()); + } + + public void writeUuid(UUID uuid) { + buffer.writeLongLE(uuid.getMostSignificantBits()); + buffer.writeLongLE(uuid.getLeastSignificantBits()); + } + + public T[] readArray(T[] array, Function function) { + List list = new ArrayList<>(); + readArray(list, function); + return list.toArray(array); + } + + public void readArray(Collection array, Function function) { + this.readArray(array, VarInts::readUnsignedInt, function); + } + + public void readArray(Collection array, ToLongFunction lengthReader, Function function) { + long length = lengthReader.applyAsLong(buffer); + for (int i = 0; i < length; i++) { + array.add(function.apply(buffer)); + } + } + + public void writeArray(Collection array, BiConsumer consumer) { + this.writeArray(array, VarInts::writeUnsignedInt, consumer); + } + + public void writeArray(Collection array, ObjIntConsumer lengthWriter, BiConsumer consumer) { + lengthWriter.accept(buffer, array.size()); + for (T val : array) { + consumer.accept(buffer, val); + } + } + + public void writeArray(T[] array, BiConsumer consumer) { + VarInts.writeUnsignedInt(buffer, array.length); + for (T val : array) { + consumer.accept(buffer, val); + } + } + + public void writeUnsignedVarInt(int value) { + VarInts.writeUnsignedInt(buffer, value); + } + + public int readUnsignedVarInt() { + return VarInts.readUnsignedInt(buffer); + } + + public void writeVarInt(int value) { + VarInts.writeInt(buffer, value); + } + + public int readVarInt() { + return VarInts.readInt(buffer); + } + + public void writeUnsignedVarLong(long value) { + VarInts.writeUnsignedLong(buffer, value); + } + + public long readUnsignedVarLong() { + return VarInts.readUnsignedLong(buffer); + } + + public void writeUnsignedBigVarInt(BigInteger value) { + VarInts.writeUnsignedBigVarInt(buffer, value); + } + + public BigInteger readUnsignedBigVarInt(int length) { + return VarInts.readUnsignedBigVarInt(buffer, length); + } + + public void writeVarLong(long value) { + VarInts.writeLong(buffer, value); + } + + public long readVarLong() { + return VarInts.readLong(buffer); + } +} \ No newline at end of file diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/util/ByteBuffer.java b/bridge-common/src/main/java/com/luminiadev/bridge/util/ByteBuffer.java deleted file mode 100644 index a85b592..0000000 --- a/bridge-common/src/main/java/com/luminiadev/bridge/util/ByteBuffer.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.luminiadev.bridge.util; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import lombok.experimental.Delegate; - -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; -import java.util.Collection; -import java.util.Objects; -import java.util.UUID; -import java.util.function.Consumer; -import java.util.function.IntConsumer; -import java.util.function.LongSupplier; -import java.util.function.Supplier; - -public final class ByteBuffer { - - @Delegate - private final ByteBuf buffer; - - private ByteBuffer(ByteBuf buffer) { - this.buffer = Objects.requireNonNull(buffer); - } - - public static ByteBuffer of(ByteBuf buffer) { - return new ByteBuffer(buffer); - } - - public ByteBuf byteBuf() { - return buffer; - } - - public String readString() { - int length = this.readUnsignedVarInt(); - return (String) buffer.readCharSequence(length, StandardCharsets.UTF_8); - } - - public void writeString(String string) { - this.writeUnsignedVarInt(ByteBufUtil.utf8Bytes(string)); - buffer.writeCharSequence(string, StandardCharsets.UTF_8); - } - - public UUID readUuid() { - return new UUID(buffer.readLongLE(), buffer.readLongLE()); - } - - public void writeUuid(UUID uuid) { - buffer.writeLongLE(uuid.getMostSignificantBits()); - buffer.writeLongLE(uuid.getLeastSignificantBits()); - } - - public void readArray(Collection array, Supplier supplier) { - this.readArray(array, () -> ByteBufVarInts.readUnsignedInt(buffer), supplier); - } - - public void readArray(Collection array, LongSupplier lengthReader, Supplier supplier) { - long length = lengthReader.getAsLong(); - for (int i = 0; i < length; i++) { - array.add(supplier.get()); - } - } - - public void writeArray(T[] array, Consumer consumer) { - ByteBufVarInts.writeUnsignedInt(buffer, array.length); - for (T val : array) { - consumer.accept(val); - } - } - - public void writeArray(Collection array, Consumer consumer) { - this.writeArray(array, size -> ByteBufVarInts.writeUnsignedInt(buffer, size), consumer); - } - - public void writeArray(Collection array, IntConsumer lengthWriter, Consumer consumer) { - lengthWriter.accept(array.size()); - for (T val : array) { - consumer.accept(val); - } - } - - public void writeUnsignedVarInt(int value) { - ByteBufVarInts.writeUnsignedInt(buffer, value); - } - - public int readUnsignedVarInt() { - return ByteBufVarInts.readUnsignedInt(buffer); - } - - public void writeVarInt(int value) { - ByteBufVarInts.writeInt(buffer, value); - } - - public int readVarInt() { - return ByteBufVarInts.readInt(buffer); - } - - public void writeUnsignedVarLong(long value) { - ByteBufVarInts.writeUnsignedLong(buffer, value); - } - - public long readUnsignedVarLong() { - return ByteBufVarInts.readUnsignedLong(buffer); - } - - public void writeUnsignedBigVarInt(BigInteger value) { - ByteBufVarInts.writeUnsignedBigVarInt(buffer, value); - } - - public BigInteger readUnsignedBigVarInt(int length) { - return ByteBufVarInts.readUnsignedBigVarInt(buffer, length); - } - - public void writeVarLong(long value) { - ByteBufVarInts.writeLong(buffer, value); - } - - public long readVarLong() { - return ByteBufVarInts.readLong(buffer); - } -} diff --git a/bridge-common/src/main/java/com/luminiadev/bridge/util/ByteBufVarInts.java b/bridge-common/src/main/java/com/luminiadev/bridge/util/VarInts.java similarity index 99% rename from bridge-common/src/main/java/com/luminiadev/bridge/util/ByteBufVarInts.java rename to bridge-common/src/main/java/com/luminiadev/bridge/util/VarInts.java index 48be62d..39ce761 100644 --- a/bridge-common/src/main/java/com/luminiadev/bridge/util/ByteBufVarInts.java +++ b/bridge-common/src/main/java/com/luminiadev/bridge/util/VarInts.java @@ -9,7 +9,7 @@ * A class from the project CloudburstMC/Protocol. */ @UtilityClass -public class ByteBufVarInts { +public class VarInts { private static final BigInteger BIG_INTEGER_7F = BigInteger.valueOf(0x7f); private static final BigInteger BIG_INTEGER_80 = BigInteger.valueOf(0x80); diff --git a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java index 848d082..3b8635d 100644 --- a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java +++ b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java @@ -2,11 +2,9 @@ import lombok.Builder; import lombok.Getter; -import lombok.ToString; @Builder @Getter -@ToString public class BridgeRabbitMQConfig { private final String host; @Builder.Default diff --git a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java index 6bed78b..ca329f0 100644 --- a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java +++ b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java @@ -4,9 +4,10 @@ import com.luminiadev.bridge.network.codec.packet.BridgePacket; import com.luminiadev.bridge.network.codec.packet.BridgePacketDirection; import com.luminiadev.bridge.network.codec.packet.handler.BridgePacketHandler; -import com.luminiadev.bridge.util.ByteBuffer; +import com.luminiadev.bridge.network.codec.packet.serializer.BridgePacketSerializerHelper; import com.rabbitmq.client.*; import com.rabbitmq.client.impl.DefaultCredentialsProvider; +import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.io.IOException; @@ -50,18 +51,18 @@ public String getServiceId() { } @Override - public void start() { + public final void start() { try { this.queueName = channel.queueDeclare().getQueue(); this.channel.queueBind(queueName, PACKET_SEND_EXCHANGE, ""); - this.channel.basicConsume(queueName, true, this::handleDelivery, consumerTag -> {}); + this.channel.basicConsume(queueName, true, this::handleDelivery, this::handleCancel); } catch (IOException e) { throw new BridgeRabbitMQException("Failed to start RabbitMQ network", e); } } @Override - public void close() { + public final void close() { try { if (queueName != null) { this.channel.queueUnbind(queueName, PACKET_SEND_EXCHANGE, ""); @@ -76,9 +77,10 @@ public void close() { @Override public void sendPacket(T packet) { - ByteBuffer buffer = ByteBuffer.of(Unpooled.buffer()); - buffer.writeString(packet.getId()); - buffer.writeString(this.serviceId); + ByteBuf buffer = Unpooled.buffer(); + BridgePacketSerializerHelper helper = new BridgePacketSerializerHelper(buffer); + helper.writeString(packet.getId()); + helper.writeString(this.serviceId); this.tryEncode(buffer, packet); for (BridgePacketHandler packetHandler : this.getPacketHandlers()) { @@ -94,9 +96,10 @@ public void sendPacket(T packet) { protected void handleDelivery(String consumerTag, Delivery delivery) { try { - ByteBuffer buffer = ByteBuffer.of(Unpooled.wrappedBuffer(delivery.getBody())); - String packetId = buffer.readString(); - String senderId = buffer.readString(); + ByteBuf buffer = Unpooled.wrappedBuffer(delivery.getBody()); + BridgePacketSerializerHelper helper = new BridgePacketSerializerHelper(buffer); + String packetId = helper.readString(); + String senderId = helper.readString(); if (senderId.equals(this.serviceId)) { return; @@ -111,4 +114,8 @@ protected void handleDelivery(String consumerTag, Delivery delivery) { throw new BridgeRabbitMQException("Failed to handle delivery: ", e); } } + + protected void handleCancel(String consumerTag) { + + } } From 098c6614c5a75661c6515e0990f9fa3baf3d663d Mon Sep 17 00:00:00 2001 From: Arkadiy Date: Sat, 12 Jul 2025 18:43:02 +0400 Subject: [PATCH 2/2] feat: added serviceId to rabbitmq config --- .../bridge/network/BridgeRabbitMQConfig.java | 13 ++++++++----- .../bridge/network/BridgeRabbitMQNetwork.java | 2 +- build.gradle.kts | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java index 3b8635d..a919e2e 100644 --- a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java +++ b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQConfig.java @@ -8,19 +8,22 @@ public class BridgeRabbitMQConfig { private final String host; @Builder.Default - private final int port = -1; + private final int port = -1; // -1 for use default value private final BridgeRabbitMQCredentials credentials; @Builder.Default - private final String virtualHost = "/"; + private final String virtualHost = "/"; // default virtual host value + @Builder.Default + private final String serviceId = null; // default value for auto generate - public BridgeRabbitMQConfig(String host, int port, BridgeRabbitMQCredentials credentials) { - this(host, port, credentials, "/"); + public BridgeRabbitMQConfig(String host, int port, BridgeRabbitMQCredentials credentials, String serviceId) { + this(host, port, credentials, "/", serviceId); } - public BridgeRabbitMQConfig(String host, int port, BridgeRabbitMQCredentials credentials, String virtualHost) { + public BridgeRabbitMQConfig(String host, int port, BridgeRabbitMQCredentials credentials, String virtualHost, String serviceId) { this.host = host; this.port = port; this.credentials = credentials; this.virtualHost = virtualHost; + this.serviceId = serviceId; } } diff --git a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java index ca329f0..b468b9f 100644 --- a/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java +++ b/bridge-rabbitmq/src/main/java/com/luminiadev/bridge/network/BridgeRabbitMQNetwork.java @@ -26,7 +26,7 @@ public class BridgeRabbitMQNetwork extends AbstractBridgeNetwork { private String queueName; public BridgeRabbitMQNetwork(BridgeRabbitMQConfig config) { - this.serviceId = UUID.randomUUID().toString(); + this.serviceId = config.getServiceId() != null ? config.getServiceId() : UUID.randomUUID().toString(); ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setHost(config.getHost()); diff --git a/build.gradle.kts b/build.gradle.kts index 449b8f9..bbb44e6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,7 +11,7 @@ java { allprojects { group = "com.luminia" - version = "1.0.4-SNAPSHOT" + version = "1.0.5-SNAPSHOT" } subprojects {