RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容主要讲解"RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"RabbitMQ
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
乐清软件开发招聘
返回服务器有点问题
连接数据库常用的三个接口对象
成都软件开发外包公司排名
免费vpn服务器
公安网络安全漏洞
开阳县数据库技术与应用
网络安全等级保护等级保护备案
中国台湾java软件开发哪家快
网络安全法发行
九域网络安全工作室
互联网科技人工智能时代
新软件开发方向
snap现实数据库技术
数据库附加不上
当今信息与网络安全最大威胁
永兴软件开发专业
预防炸骗手抄报网络安全
网络安全宣传周开幕在即
服务器的主要种类刀片式
centos云服务器配置
数据库过G
蛋白上下游数据库
龙图网络技术有限公司
福州市新华互联网科技学校专业
20020网络安全宣传主题
网站服务器迁移公告
国家公共网络安全日
我的世界服务器金币榜系统
查找小说软件开发