···24)
2526func createServer(t *testing.T) *Server {
27+ srv, err := New(serverAddr, ackDelay, ackTimeout)
028 require.NoError(t, err)
2930 t.Cleanup(func() {
···39 srv.topics[topicName] = &topic{
40 name: topicName,
41 subscriptions: make(map[net.Addr]*subscriber),
42+ messageStore: NewMemoryStore(),
43 }
4445 return srv
···516 messages = append(messages, fmt.Sprintf("message %d", i))
517 }
5180519 topic := fmt.Sprintf("topic:%s", topicA)
5200521 for _, msg := range messages {
522 sendMessage(t, publisherConn, topic, []byte(msg))
523 }
524+525+ // send some messages for topic B as well
526+ sendMessage(t, publisherConn, fmt.Sprintf("topic:%s", topicB), []byte("topic b message 1"))
527+ sendMessage(t, publisherConn, fmt.Sprintf("topic:%s", topicB), []byte("topic b message 2"))
528+ sendMessage(t, publisherConn, fmt.Sprintf("topic:%s", topicB), []byte("topic b message 3"))
529530 subscriberConn := createConnectionAndSubscribe(t, []string{topicA}, From, 0)
531 results := make([]string, 0, len(messages))
···550 messages = append(messages, fmt.Sprintf("message %d", i))
551 }
5520553 topic := fmt.Sprintf("topic:%s", topicA)
554555 // send multiple messages
556 for _, msg := range messages {
557 sendMessage(t, publisherConn, topic, []byte(msg))
558 }
559+560+ // send some messages for topic B as well
561+ sendMessage(t, publisherConn, fmt.Sprintf("topic:%s", topicB), []byte("topic b message 1"))
562+ sendMessage(t, publisherConn, fmt.Sprintf("topic:%s", topicB), []byte("topic b message 2"))
563+ sendMessage(t, publisherConn, fmt.Sprintf("topic:%s", topicB), []byte("topic b message 3"))
564565 subscriberConn := createConnectionAndSubscribe(t, []string{topicA}, From, 3)
566
+2-7
server/subscriber.go
···44 offset := startAt
4546 go func() {
47- // here we need to replay all messages from the store for the topic.
48- err := messageStore.ReadFrom(offset, func(msgs []MessageToSend) {
49- // go func() {
50- for _, msg := range msgs {
51- s.messages <- newMessage(msg.data)
52- }
53- // }()
54 })
55 if err != nil {
56 slog.Error("failed to replay messages from offset", "error", err, "offset", offset)
···44 offset := startAt
4546 go func() {
47+ err := messageStore.ReadFrom(offset, func(msg MessageToSend) {
48+ s.messages <- newMessage(msg.data)
0000049 })
50 if err != nil {
51 slog.Error("failed to replay messages from offset", "error", err, "offset", offset)