grav
grav copied to clipboard
Embedded decentralized message bus
Under high load, something like this can fail to find a reply: ``` pod.Send(jobMsg).WaitUntil(grav.Timeout(5), func(msg grav.Message) error { ... }) ``` It's unclear why, as another connected pod can indeed...
It would be nice to add more complex Pod type that can handle multiple message types. Pod would be like Actor
Having a MsgData interface would make it easier to create/send messages in one step, for example: ``` type MsgData interface { Data() []byte MsgType() string } ``` Could then allow...
Something to collect multiple pods, like in cases where you need to watch multiple message types and need to keep references to multiple pods. Something like: ``` pods := g.PodGroup()...
[Libp2p](https://libp2p.io/) is a networking stack and library for p2p protocols. It supports several transport, security, pubsub, and routing protocols. Grav could really benefit from supporting libp2p as a transport as...
Allow nodes to discover one another by querying a service mesh's control plane
When receiving a message via a transport, the transport should be able to ack it and show it's been sent to the local bus. As a bonus, it would be...
When using a non-default Message type, it's essential that incoming messages can be unmarshalled into the correct struct. User should be able to provide a function that, given the Message's...
The HTTP transport uses a single pod for all incoming and outgoing messages, but more sophisticated transport plugins should use a seperate pod per connection. Both situations need to be...