Skip to content

Latest commit

 

History

History
86 lines (75 loc) · 2.61 KB

File metadata and controls

86 lines (75 loc) · 2.61 KB

LumiBridge

A library for communicating by sending packets between multiple services, based on RabbitMQ

Introduction

What is it for? This library helps with communication between multiple services connected to the same RabbitMQ by sending and processing custom packets.

Example of usage

import com.luminiadev.bridge.network.BridgeRabbitMQConfig;
import com.luminiadev.bridge.network.BridgeRabbitMQCredentials;
import com.luminiadev.bridge.network.BridgeRabbitMQNetwork;
import com.luminiadev.bridge.network.codec.BridgeCodec;
import com.luminiadev.bridge.network.codec.packet.BridgePacketDirection;

// Creating a LumiBridge implementation instance on RabbitMQ
BridgeRabbitMQNetwork network = new BridgeRabbitMQNetwork(BridgeRabbitMQConfig.builder()
        .host("localhost")
        .credentials(new BridgeRabbitMQCredentials("guest", "guest"))
        .serviceId("my-service-id") // You can remove this parameter and the id will be generated automatically
        .build());

// Creating a codec with an example packet
// If any packet is not found in the codec, it will be handled as BridgeUnknownPacket.
BridgeCodec codec = BridgeCodec.builder()
        .registerPacket("example_packet", ExamplePacket::new, new ExamplePacketSerializer())
        .build();

network.setCodec(codec); // Set codec to network
network.start(); // Start network

// Adding packet handler
network.addPacketHandler((packet, direction, serviceId) -> {
    if (direction == BridgePacketDirection.TO_SERVICE) {
        System.out.println("Received packet " + packet + " from service " + serviceId);
    } else {
        System.out.println("Sent packet: " + packet);
    }
});

Maven

Adding repo:

<repositories>
    <repository>
        <id>luminiadev-repository-snapshots</id>
        <url>https://repo.luminiadev.com/snapshots</url>
    </repository>
</repositories>

For adding a library only:

<dependency>
    <groupId>com.luminiadev.bridge</groupId>
    <artifactId>bridge-common</artifactId>
    <version>1.0.6-SNAPSHOT</version>
</dependency>

For adding a library RabbitMQ implementation:

<dependency>
    <groupId>com.luminiadev.bridge</groupId>
    <artifactId>bridge-rabbitmq</artifactId>
    <version>1.0.6-SNAPSHOT</version>
</dependency>

Gradle

Adding repo:

maven {
    name = "luminiadevRepositorySnapshots"
    url = uri("https://repo.luminiadev.com/snapshots")
}

For adding a library only:

implementation "com.luminiadev.bridge:bridge-common:1.0.6-SNAPSHOT"

For adding a library RabbitMQ implementation:

implementation "com.luminiadev.bridge:bridge-rabbitmq:1.0.6-SNAPSHOT"