引用:JackJiang 发表于 2022-07-02 09:58 ![]() |
引用:li709854423 发表于 2022-07-01 21:16 你这redis到底什么作用 |
引用:JackJiang 发表于 2022-07-01 18:40 你还是没明白啊。。我知道第二段。但如果消息都说是在redis步骤就断 了。都还没调用往下发的那段呢 |
引用:li709854423 发表于 2022-07-01 17:39 我明白了。其实,c2s回调里,你再从服务端发出的消息,服务端也有QoS重传机制的,相当于这条消息是两段: 第一段,就是c到s,这个由c端完成QoS保证。 第二段,就是c再到接收端的c,这个由s端完成QoS保证。 具体你可以看一下这个接口:MessageQoSEventListenerS2C,你可以像客户端那样为服务端设置这个回调,并在回调进行消息无法正常送达的离线处理等。 |
引用:JackJiang 发表于 2022-07-01 11:08 所以你还是回到我刚说的啊。 假设服务端是一个自动回复机器人。会根据收到的消息123,,返回内容 你好。 现在客户端发个123。服务端收到后,onTransferMessage4C2S 监听对不对? onTransferMessage4C2S监听到后。在方法处理的时候假设redis突然网络波动。出现异常。那就不会发回复给客户端了。 但是客户端又因为自动ack。导致以为消息发了。这样不会进行重发消息,所以用户就一直等不来服务端的自动回复 你好 这个内容。 明白吗?就是为啥onTransferMessage4C2S处理异常的情况下。应该认为是没收到消息。不应该自动ack啊。。不是应该根据onTransferMessage4C2S的处理情况去进行是否ack吗? |
引用:li709854423 发表于 2022-07-01 11:03 说了这么多,我可能根本没理解你的意思是什么。 你要么直接说你想做什么功能,实现什么样的需求,不要讨论技术,让我理解你的意图后,我告诉你怎么做合理 |
引用:JackJiang 发表于 2022-06-30 20:01 所以我说的这种场景还是没解决啊。。 onTransferMessage4C2S在处理异常的情况下。客户端会依然认为消息已经发送成功了,因为服务端已经应答回去了。 我主要是问为什么是这样设计的,onTransferMessage4C2S在异常的情况下,无法让服务端不发送应答消息,这样的设计是为什么。。 |
引用:li709854423 发表于 2022-06-30 19:51 你应用层只管考虑发,至于怎么保证发到,这是sdk底层的算法的事 |
引用:JackJiang 发表于 2022-06-25 17:26 C2S就是客户端发送的。服务端处理的。比如假设添加好友。或者说简单点。往客服发个消息1.客服收到消息后判断12345返回自动回复的12345的内容。这时候如果这个处理异常(因为某种随机性的原因,只要重试就可以正常通过的异常)。消息已经ack回去了。用户发了1后。看到客服不会自动回复。对吧?也不会重发再尝试一下 |
这个回调方法的作用,就是接受任何由客户端发送的、且接收者uid=“0”(也就是服务端) 的指令或消息。 我不太理解你的意思,你要么这么说:你想实现什么功能? 然后我给你合适的建议 |