工程师: 这个线程执行receive_message 具体遇到什么问题? 具体堵塞在什么地方?
工程师: 抱歉,我们对django开发所知甚少。 相关开发问题,还需要您到相关开发社区去咨询一下。
“执行到message.receive_message()这里就停在这里了” 停止了多长时间?
工程师: 您好,消息的结构是这样的。请问您乱码问题在本地读取也是,还是只是控制台测试是这样?
工程师: 长轮询最长是30秒,如果超过30秒receive_message都没有返回,可以怀疑是代码的问题,建议使用单线程写个最简单的程序(官网python demo),先将receive_message调试成功。
关于乱码: queue提供的sdk,会默认对发送的消息做Base64 Encode,对接收到的消息做Base64 Decode。
所以如果使用queue sdk来发送,sdk接收是没有问题的。 在队列控制台点击“接收消息”时,您需要指定使用base64解码.
工程师: topic提供的sdk, 默认是不做任何编解码的。
所以如果用sdk发送消息到topic, 配置推送消息到队列,用python sdk拉取队列消息,是会产生乱码的,需要自行做base64解码。
php: 从1.2.1版本开始,Queue提供了禁用Base64的选项,需要在getQueueRef的时候传入参数$base64 = FALSE;
java: 从1.1.0版本开始,消息Base64编码支持可选。 其他语言的queue sdk目前还不提供base64编解码可选。