0

我正在试验 Nats 流服务器,到目前为止它看起来很有希望。但是,似乎只有在为其创建了持久订阅后,队列才能持久。这当然是有道理的,但是它在微服务架构中是如何工作的呢?

例如,假设您正在发布服务,而 Service1 正在将消息发送到尚未持久且没有侦听器的队列中。一段时间后,相应的服务启动并使该队列持久。你只是处理这个有希望的短暂损失还是确保先启动后面的服务?

4

1 回答 1

1

抱歉耽搁了。在 NATS Streaming 中,发布到频道的任何消息都会被存储,无论订阅兴趣如何。您可以在“foo”上试验并发布 3 条消息。然后,您可以开始订阅(甚至是非持久订阅)并重播这些消息。只需指定订阅的起点即可。例如,有一个选项可以提供“所有可用的”。使用 Go nats 示例,它将是:

$ go run examples/stan-pub/main.go foo msg1
Published [foo] : 'msg1'
$ go run examples/stan-pub/main.go foo msg2
Published [foo] : 'msg2'
$ go run examples/stan-pub/main.go foo msg3
Published [foo] : 'msg3'

$ go run examples/stan-sub/main.go -id "me" -all foo
Connected to nats://127.0.0.1:4222 clusterID: [test-cluster] clientID: [me]
Listening on [foo], clientID=[me], qgroup=[] durable=[]
[#1] Received: sequence:1 subject:"foo" data:"msg1" timestamp:1583947471103854000 
[#2] Received: sequence:2 subject:"foo" data:"msg2" timestamp:1583947472684693000 
[#3] Received: sequence:3 subject:"foo" data:"msg3" timestamp:1583947473990567000 
于 2020-03-11T17:25:45.113 回答