39 lines
1.3 KiB
Markdown
39 lines
1.3 KiB
Markdown
+++
|
|
title = "Go Channel"
|
|
description = "A Pub/Sub implemented on Golang goroutines and channels"
|
|
date = 2019-07-06T22:30:00+02:00
|
|
bref = "A Pub/Sub implemented on Golang goroutines and channels"
|
|
weight = 40
|
|
+++
|
|
|
|
{{% load-snippet-partial file="src-link/pubsub/gochannel/pubsub.go" first_line_contains="// GoChannel" last_line_contains="type GoChannel struct {" %}}
|
|
|
|
You can find a fully functional example with Go Channels in the [Watermill examples](https://github.com/ThreeDotsLabs/watermill/tree/master/_examples/pubsubs/go-channel).
|
|
|
|
### Characteristics
|
|
|
|
| Feature | Implements | Note |
|
|
| ------- | ---------- | ---- |
|
|
| ConsumerGroups | no | |
|
|
| ExactlyOnceDelivery | yes | |
|
|
| GuaranteedOrder | yes | |
|
|
| Persistent | no| |
|
|
|
|
### Configuration
|
|
|
|
You can inject configuration via the constructor.
|
|
|
|
{{% load-snippet-partial file="src-link/pubsub/gochannel/pubsub.go" first_line_contains="func NewGoChannel" last_line_contains="logger:" %}}
|
|
|
|
### Publishing
|
|
|
|
{{% load-snippet-partial file="src-link/pubsub/gochannel/pubsub.go" first_line_contains="// Publish" last_line_contains="func (g *GoChannel) Publish" %}}
|
|
|
|
### Subscribing
|
|
|
|
{{% load-snippet-partial file="src-link/pubsub/gochannel/pubsub.go" first_line_contains="// Subscribe" last_line_contains="func (g *GoChannel) Subscribe" %}}
|
|
|
|
### Marshaler
|
|
|
|
No marshaling is needed when sending messages within the process.
|