千家信息网

RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"RabbitMQ Python端发送消息给Java端出现全数字问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"RabbitMQ
千家信息网最后更新 2026年11月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.bootspring-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安全错误 数据库的锁怎样保障安全 互联网络科技 中国互联网科技股 金融科技 互联网金融 互联网科技股票 腾讯科技 互联网女皇 互联网 新科技 哈尔滨秒房互联网科技有限公司 互联网科技创新服务 速维有品互联网信息科技(苏州)有限公司 国大互联网教育科技有限公司工作 互联网金融科技展 互联网在线教育科技创业 互联网科技大赛获奖感言 互联网安防科技感 福建互联网展示科技馆设计 广州智享互联网科技 互联网科技手抄报图片 美国五大互联网科技公司市值多少 互联网科技创业有什么好项目 小牛互联网科技有限公司地址 深圳市人人互联网科技有限公司 科技与互联网 善班互联网科技有限公司 深圳艾佳互联网科技 互联网科技生活的内容 速维有品互联网信息科技(苏州)有限公司 互联网科技如何创业 沐思想互联网科技有限公司 珠海东科互联网科技有限公司 唯美互联网科技
0