mirror of
https://github.com/postmannen/ctrl.git
synced 2024-12-15 17:51:15 +00:00
added nats queue groups subscriber
This commit is contained in:
parent
eaf164c9d7
commit
dc3186285d
3 changed files with 14 additions and 1 deletions
|
@ -21,6 +21,7 @@ As long as you can do something as an operator on in a shell on a system you can
|
||||||
- [Publishing and Subscribing processes](#publishing-and-subscribing-processes)
|
- [Publishing and Subscribing processes](#publishing-and-subscribing-processes)
|
||||||
- [Publisher](#publisher)
|
- [Publisher](#publisher)
|
||||||
- [Subscriber](#subscriber)
|
- [Subscriber](#subscriber)
|
||||||
|
- [Load balancing](#load-balancing)
|
||||||
- [Logical structure](#logical-structure)
|
- [Logical structure](#logical-structure)
|
||||||
- [Terminology](#terminology)
|
- [Terminology](#terminology)
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
|
@ -172,6 +173,10 @@ If one process hangs on a long running message method it will not affect the res
|
||||||
2. When a message have been received, a handler for the method type specified in the message will be executed.
|
2. When a message have been received, a handler for the method type specified in the message will be executed.
|
||||||
3. If the output of the method called is supposed to be returned to the publiser it will do so by using the replyMethod specified.
|
3. If the output of the method called is supposed to be returned to the publiser it will do so by using the replyMethod specified.
|
||||||
|
|
||||||
|
### Load balancing
|
||||||
|
|
||||||
|
Steward instances with the same **Nodename** will automatically load balance the handling of messages on a given subject, and any given message will only be handled once by one instance.
|
||||||
|
|
||||||
### Logical structure
|
### Logical structure
|
||||||
|
|
||||||
TODO: Make a diagram here...
|
TODO: Make a diagram here...
|
||||||
|
|
|
@ -565,7 +565,8 @@ func (p process) messageSubscriberHandler(natsConn *nats.Conn, thisNode string,
|
||||||
// on a node.
|
// on a node.
|
||||||
func (p process) subscribeMessages() *nats.Subscription {
|
func (p process) subscribeMessages() *nats.Subscription {
|
||||||
subject := string(p.subject.name())
|
subject := string(p.subject.name())
|
||||||
natsSubscription, err := p.natsConn.Subscribe(subject, func(msg *nats.Msg) {
|
// natsSubscription, err := p.natsConn.Subscribe(subject, func(msg *nats.Msg) {
|
||||||
|
natsSubscription, err := p.natsConn.QueueSubscribe(subject, subject, func(msg *nats.Msg) {
|
||||||
//_, err := p.natsConn.Subscribe(subject, func(msg *nats.Msg) {
|
//_, err := p.natsConn.Subscribe(subject, func(msg *nats.Msg) {
|
||||||
|
|
||||||
// Start up the subscriber handler.
|
// Start up the subscriber handler.
|
||||||
|
|
|
@ -2133,6 +2133,13 @@ func (m methodREQPublicKeysPut) handler(proc process, message Message, node stri
|
||||||
|
|
||||||
fmt.Printf(" *** RECEIVED KEYS: %v\n", keys)
|
fmt.Printf(" *** RECEIVED KEYS: %v\n", keys)
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// - We need to store the public keys in a map in signatures.go
|
||||||
|
// - We should also persist that public keys map to file, so we can read
|
||||||
|
// that file on startup to get all the previosly received keys.
|
||||||
|
// - The store to map and also that map to file should happen with a method
|
||||||
|
// on signatures.publicKeys, so we do both in one go.
|
||||||
|
|
||||||
// Prepare and queue for sending a new message with the output
|
// Prepare and queue for sending a new message with the output
|
||||||
// of the action executed.
|
// of the action executed.
|
||||||
// newReplyMessage(proc, message, out)
|
// newReplyMessage(proc, message, out)
|
||||||
|
|
Loading…
Reference in a new issue