Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于QoS 1的问题 #635

Open
CoderIvan opened this issue May 24, 2023 · 4 comments
Open

关于QoS 1的问题 #635

CoderIvan opened this issue May 24, 2023 · 4 comments

Comments

@CoderIvan
Copy link

File: /zh/202212/introduction-to-mqtt-qos.md

image

关于QoS 1的报文重复问题,我看了MQTT协议文档

造成重复的原因应该是后端对于qos1的publish包没有存任何状态,所以无法判断dup=1时,是否处理过

package id无关吧?

@tigercl
Copy link

tigercl commented May 25, 2023

@CoderIvan 是的,接收端不能根据 DUP 来判断已经接收过这个消息。

@CoderIvan
Copy link
Author

@tigercl 感谢回复,所以和是否重复使用相同的package_id无关吧?,就算用不同的package_id也是无法判断吧?

1 similar comment
@CoderIvan
Copy link
Author

@tigercl 感谢回复,所以和是否重复使用相同的package_id无关吧?,就算用不同的package_id也是无法判断吧?

@tigercl
Copy link

tigercl commented Nov 1, 2023

@tigercl 感谢回复,所以和是否重复使用相同的package_id无关吧?,就算用不同的package_id也是无法判断吧?

是的,虽然重传的时候必须使用与原始消息相同的 Packet ID,然后我们无法保证发送端在其他时候不会使用这个 Packet ID。

比如我们一次性发送多个 QoS 为 1 的消息,实际上这些消息中的 Packet ID 可以是一样的,因为接收端总是在响应完上一条消息后才来处理下一条消息,所以它总会认为消息中的 Packet ID 目前是可用的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants