Skip to content

🗄️ [SDK] A java SDK that allows you to quickly interact with our services without having to read rest documentation!

License

Notifications You must be signed in to change notification settings

LaunchBlockMC/sdk-java

Repository files navigation

LaunchBlock Java SDK

Java SDK

GitHub Release

Installing the SDK

Get the current latest version from the releases page

Maven

Add the dependency to your dependencies section in pom.xml

<dependency>
  <groupId>gg.launchblock</groupId>
  <artifactId>sdk-java</artifactId>
  <version>version</version>
</dependency>

Gradle

Add the dependency to your build.gradle file

dependencies {
    implementation 'gg.launchblock:sdk-java:version'
}

Development Environment

By default, kafka is expected to be running on kafka:9092.
The KAFKA_HOSTNAME and KAFKA_PORT environment variables may be used to change the hostname and port which the SDK expects kafka on.

Listener System

Listening to events

Create a class implementing LaunchBlockEventListener, then use methods annotated with @LaunchBlockEventHandler with one parameter representing a class which extends LaunchBlockEvent.

To register events on an object of this type, create a LaunchBlockEventManager and call its registerEvents method on your listener object.

Remember to close() your LaunchBlockEventManager when it is no longer required.

Load Distribution
the groupId parameter in LaunchBlockEventManager's constructor may be used to distribute events across all event managers with this group id. (usually across multiple running instances of an application)

Example

public class TestClass implements LaunchBlockEventListener {

	@LaunchBlockEventHandler(priority = LaunchBlockEventPriority.HIGH)
	public void onProjectCreated(final LaunchBlockProjectCreatedEvent e) {
		// Someone just created a project!
	}
	
}
public class Main {

	public static void main(final String[] args) {
		final LaunchBlockEventManager eventManager = new LaunchBlockEventManager();
		eventManager.registerEvents(new TestClass());
		//...
		eventManager.close();
	}
	
}

Creating events

Create a class extending LaunchBlockEvent with a constructor of (String, JsonNode), representing the topic and raw json message sent through kafka.

To call this event through this constructor when a kafka message is received within a specific topic, use the createTopicBinding method on your event manager.

Example

public class SomeEvent extends LaunchBlockEvent {

	public SomeEvent(final String topic, final JsonNode rawContent) {
		super(topic, rawContent);
		// Process raw content
	}
    
}
public class Main {

	public static void main(final String[] args) {
		final LaunchBlockEventManager eventManager = new LaunchBlockEventManager();
		eventManager.createTopicBinding("kafka_topic", SomeEvent.class);
		//...
		eventManager.close();
	}
	
}

Emitter System

To send messages to kafka topics, which may be picked up by the listener system, you may use the emitter system.

To use, create a LaunchBlockMessageEmitter object and call its send method.

Example

public class Main {

	public static void main(final String[] args) {
		final LaunchBlockEventEmitter emitter = new LaunchBlockEventEmitter();

		final ObjectNode message = new ObjectMapper().createObjectNode();
		message.put("host", "launchblock.gg");
		
		emitter.send("kafka_topic", message);
		
		//...
		emitter.close();
	}
	
}

About

🗄️ [SDK] A java SDK that allows you to quickly interact with our services without having to read rest documentation!

Topics

Resources

License

Stars

Watchers

Forks

Languages