substrate
substrate copied to clipboard
A message broker abstraction for Go
Though this might be a good thing to try out, as it looks to be super easy to deploy. Adding the substrate backend should make using it very easy. This...
The session version is an alternative to marking messages to be discarded after a rebalance. Using buffered channel should allow us to exhaust available message faster when rebalance happens.
Apologies if this idea has been discussed and rejected before. I feel like maybe it has. Or if there's already some other way to do this, and I just couldn't...
Panic
``` panic: runtime error: hash of unhashable type gateway.SimpleMessage goroutine 28 [running]: github.com/uw-labs/substrate/internal/helper.(*AckOrderingSink).PublishMessages.func3(0x0, 0x0) /go/src/github.com/uw-labs/substrate/internal/helper/sink_ack_ordering.go:63 +0x6a1 golang.org/x/sync/errgroup.(*Group).Go.func1(0xc00019e570, 0xc00019e960) /go/src/golang.org/x/sync/errgroup/errgroup.go:57 +0x59 created by golang.org/x/sync/errgroup.(*Group).Go /go/src/golang.org/x/sync/errgroup/errgroup.go:54 +0x66 ```
The following line causes a panic if the underlying type of the `substrate.Message` is a slice: https://github.com/uw-labs/substrate/blob/master/sync_adapter_sink.go#L98-L100 ``` panic: runtime error: comparing uncomparable type writer.message goroutine 19 [running]: github.com/uw-labs/substrate.(*synchronousMessageSinkAdapter).loop.func2(0x0, 0x0)...
Currently there is no guarantee messages are received in order when using nats streaming. This can be easily fixed by checking the msg.Sequence. 2 cases can be implemented: - `SequenceGuarantee`...
Adapt tests so that they can run in circleci ideally, (but without breaking them locally)