An open API service indexing awesome lists of open source software.

https://github.com/accelbyte/messagebus-go-sdk

Go SDK for connecting AccelByte's Justice services over message broker
https://github.com/accelbyte/messagebus-go-sdk

Last synced: 6 months ago
JSON representation

Go SDK for connecting AccelByte's Justice services over message broker

Awesome Lists containing this project

README

          

[![Build Status](https://travis-ci.com/AccelByte/messagebus-go-sdk.svg?branch=master)](https://travis-ci.com/AccelByte/messagebus-go-sdk)

# messagebus-go-sdk
Go SDK to connecting AccelByte's justice Go services over message broker

## Supported Message Broker
- Apache Kafka

## Usage

### Importing Package

```go
import "github.com/AccelByte/messagebus-go-sdk"
```

### Publish Asynchronous Message
Publish message asynchronously

```go
client.PublishAsync(
NewPublish().
Topic("topic").
MessageType("message type").
Message("test message").
Service("service name").
TraceID("trace id").
MessageID("message id"))
```

### Publish Synchronous Message
Publish message synchronously with error response

```go
err := client.PublishSync(
NewPublish().
Topic("topic").
MessageType("message type").
Message("test message").
Service("service name").
TraceID("trace id").
MessageID("message id"))
```

### Publish Message With Response
Publish message and wait a response from consumer (restful api concepts) with timeout.

```go
client.PublishWithResponses(
NewPublish().
Topic("topic").
MessageType("message type").
Message("test message").
TraceID("trace id").
MessageID("message id").
Callback(func(message *Message, err error))
```

Set global timeout for publish message with response (in millisecond)
```go
client.SetTimeout(10000)
```

### Register Callback for Subscribe Message
Register callback function for specific topic and message type.

```go
client.Register(
NewSubscribe().
Topic("topic").
MessageType("message type").
Callback(func(message *Message, err error)))
```

### Authentication

#### SASL-SCRAM Authentication

Example configuration:

```
securityConfig := &messagebus.SecurityConfig{
AuthenticationType: "SASL-SCRAM",
SASLUsername: "username",
SASLPassword: "password",
}
kafkaClient, err := messagebus.NewKafkaClientWithAuthentication("localhost:9092", "realmName", securityConfig)
```