RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,本篇内容主要讲解"RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"RabbitMQ
千家信息网最后更新 2024年11月30日RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决
本篇内容主要讲解"RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决"吧!
RabbitMQ接受一堆数字Bug
Python发送端用 pika 发送消息
发送代码是这样的:
#!/usr/bin/python# -*- coding:utf-8 -*-import pikaimport jsoncredentials = pika.PlainCredentials('ding', 'ding')connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.0.200',5672,'/',credentials))channel = connection.channel()channel.queue_declare(queue='test queue')msg = 'GG next'channel.basic_publish(exchange='',routing_key='test queue',body=msg)connection.close()
Java接收端是 Spring boot 项目,集成了 RabbitMQ 的包:
org.springframework.boot spring-boot-starter-amqp
接收代码是这样的:
@RabbitListener(queues = "test queue")public void process2(String message) { System.out.println(message);}
运行Python脚本,Java端得到的结果是这样的:
71,71,32,110,101,120,116
结果全是 ASCII码了!之前用Java集成了 RabbitMQ,Java和Java之间是没有这个问题的。于是想到在Java端把 ASCII 码转换为字符串,就写了下面的代码:
@RabbitListener(queues = "test queue")public void process2(String message) { System.out.println(arrayToStr(ascToArray(message)));}private String arrayToStr(int[] arr) { String res = "";for (int i = 0; i < arr.length; i++) { res += Character.toString((char)arr[i]);}return res;}private int[] ascToArray(String str) { String[] arr = str.split(",");int[] resArr = new int[arr.length];for (int i = 0; i < arr.length; i++) { resArr[i] = Integer.parseInt(arr[i]);}return resArr;}
得到的结果正常了:
GG next
正有点开心之际,想到一个问题,中文字符怎么办?一个汉字两个字节,ASCII码可表示不了啊?
于是试验一下Python端发送
msg = 'GG 下一把'
Java端果然出问题了:
GG ¦ᄌヒ¦ᄌタ₩ハハ
这时我们可以看看 RabbitMQ 给我发送过来的到底是啥,Java端代码变成这样:
@RabbitListener(queues = "test queue")public void process2(Object message) { System.out.println(message);}
Python发送端发来的是这样的:
(Body:'[B@49d1204c(byte[12])' MessageProperties [headers={}, contentLength=0, redelivered=false, receivedExchange=, receivedRoutingKey=test queue, deliveryTag=1, consumerTag=amq.ctag-Q4Oy_yC5qRoLoxAdu50zaw, consumerQueue=test queue])
Java发送端发来的是这样的:
(Body:'GG 下一把' MessageProperties [headers={}, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=false, receivedExchange=, receivedRoutingKey=queue, deliveryTag=1, consumerTag=amq.ctag-o1v48tbAr8mu-pT7HZHvHA, consumerQueue=queue])
居然一个是 byte[] 数组一个是 String这可怎么办?解决代码如下:
import org.springframework.amqp.core.Message;@RabbitListener(queues = "test queue")public void process2(Message message) { String messageBody = new String(message.getBody());System.out.println(messageBody);}
不论是Java端还是Python端发来的,都能正确显示了。
GG 下一把
到此,相信大家对"RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
问题
代码
数字
消息
结果
内容
字符
怎么办
学习
实用
更深
两个
之间
之际
兴趣
字符串
字节
实用性
实际
操作简单
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
大专学软件开发特别难嘛
国际服务器怎么直播
multi model 数据库
视频管理服务器和硬盘录像机区别
用友软件t3显示服务器未启用
五家服务器崩溃
医疗设备软件开发规范
政府软件开发哪家好比较
服务器站点
芜湖服务器机箱定制
江西调度服务器生产云空间
人民日报互联网发展科技
滨州信息中心软件开发
杭州久胤网络技术有限公司
部落冲突满9本数据库
衡水最新网络安全审查办法
广东汕尾服务器 租
网络安全法亮点之重视个人信息
网络维护安全和网络安全
数据库模型创建步骤
正式服哪个服务器人多广告少
电脑网络安全主题绘画
数据库被置疑
dp 302打印服务器
台州网络安全招聘
处置网络安全事故纪实
智能管理系统服务器
关系型数据库主键唯一实体
常见的高速网络技术有几种
vue音乐怎么播放数据库音乐