An experimental pub/sub client and server project.

Tidy up

Changed files
+12 -6
pubsub
+9 -4
pubsub/subscriber.go
··· 173 173 return 174 174 } 175 175 176 - err := s.readMessage(consumer.msgs) 176 + err := s.readMessage(ctx, consumer.msgs) 177 177 if err != nil { 178 178 consumer.Err = err 179 179 return ··· 181 181 } 182 182 } 183 183 184 - func (s *Subscriber) readMessage(msgChan chan *Message) error { 185 - // var msg *Message 184 + func (s *Subscriber) readMessage(ctx context.Context, msgChan chan *Message) error { 186 185 op := func(conn net.Conn) error { 187 186 err := s.conn.SetReadDeadline(time.Now().Add(time.Second)) 188 187 if err != nil { ··· 225 224 226 225 msgChan <- msg 227 226 228 - ack := <-msg.ack 227 + var ack bool 228 + select { 229 + case <-ctx.Done(): 230 + return ctx.Err() 231 + case ack = <-msg.ack: 232 + } 233 + //ack := <-msg.ack 229 234 230 235 ackMessage := server.Nack 231 236 if ack {
+3 -2
pubsub/subscriber_test.go
··· 134 134 err = publisher.PublishMessage(msg) 135 135 require.NoError(t, err) 136 136 137 + time.Sleep(time.Second) 137 138 cancel() 138 139 139 140 select { ··· 180 181 } 181 182 182 183 // give the consumer some time to read the messages -- TODO: make better! 183 - time.Sleep(time.Millisecond * 500) 184 + time.Sleep(time.Second) 184 185 cancel() 185 186 186 187 select { ··· 231 232 require.NoError(t, err) 232 233 233 234 // give the consumer some time to read the messages -- TODO: make better! 234 - time.Sleep(time.Millisecond * 500) 235 + time.Sleep(time.Second) 235 236 cancel() 236 237 237 238 select {