如何使发布的队列自动持久?

问题描述 投票:0回答:1

我正在尝试使用Nats流服务器,到目前为止,它看起来很有希望。但是,似乎队列只有在为其创建持久预订后才可以持久。这当然是有道理的,但是在微服务架构中它如何在实践中起作用?

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

persistence message-queue nats-streaming-server
1个回答
1
投票

抱歉,抱歉。在NATS流中,无论订阅兴趣如何,都会存储发布到频道的任何消息。您可以尝试在“ 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 
© www.soinside.com 2019 - 2024. All rights reserved.