소스 검색

Implement `Subscribe()`.

Arto Bendiken 3 년 전
부모
커밋
0433b6224e
1개의 변경된 파일11개의 추가작업 그리고 0개의 파일을 삭제
  1. 11 0
      bus.go

+ 11 - 0
bus.go

@@ -10,6 +10,8 @@ type Bus struct {
 	NATS *nats.EncodedConn
 }
 
+type SubscriberHandler func(event *Event)
+
 func Connect(url string) (*Bus, error) {
 	nats.RegisterEncoder("v1", &V1MessageEncoder{})
 	conn, err := nats.Connect(url)
@@ -57,3 +59,12 @@ func (bus *Bus) PublishRawEvent(stream string, rawEvent *RawEvent) error {
 	}
 	return nil
 }
+
+func (bus *Bus) Subscribe(stream string, handler SubscriberHandler) (*nats.Subscription, error) {
+	return bus.NATS.Subscribe(stream, func(rawEvent RawEvent) {
+		event, err := rawEvent.Check()
+		if err == nil { // ignore invalid messages
+			handler(event)
+		}
+	})
+}