I did an experiment. The producer sent a message to nsqd, and the consumer did not finish after receiving the message. Then close the terminal where nsqd is located. Restart nsqd again and the message will not be sent to the consumer, that is, it is lost.
It seems that when nsqd exits abnormally and persistmetadata is not executed, messages in inflight state will be lost.
version: nsqd v1.2.1-alpha (built w/go1.13)
command: command: /nsqd --lookupd-tcp-address="0.0.0.0:4160" --max-req-timeout=168h0m0s --broadcast-address=0.0.0.0 --data-path=/data/ --mem-queue-size=0