RabbitMQ 在我的队列中写入了错误的字符
RabbitMQ writes wrong characters in my queue
我正在尝试使用 grails 3.3.11 在 RabbitMQ 中发布消息。但是我在巴西葡萄牙语字符方面遇到了麻烦。
好像是charset的问题,不知道怎么解决。有知道的请帮帮我
处理队列中的消息后,我的代码在另一个队列中发布状态。问题是我发布了一条消息,但是当我在RabbitMQ中看到消息时,消息被修改为错误的字符。专门针对 à、ç、õ、ú 等巴西语言字符。
那是我的队列发布代码,就是问题所在。
def publishNewStatus(String solicId, String newStatus, String message){
rabbitMessagePublisher.send {
exchange = "plt.cmbsolic.requests.status"
body = [requestId:solicId,status:newStatus,message:message]
}
}
这是发布的控制台结果。注意是正确的。
QUEUE CONSUMING => STARTED AT Thu May 13 17:58:49 BRT 2021
SOLICITATION ID STATUS => Status FAILED_IN_CMBID for solicitation 2419399765SOL01
API RESPONSE => Usuário 2419399765 não encontrado
QUEUE CONSUMING => FINISHED AT Thu May 13 17:58:49 BRT 2021
API response 是变量 message,方法 publishNewStatus 的第三个参数。
但是如果我去队列,那就是存储在那里的消息。
{"requestId":"2419399765SOL01","status":"FAILED_IN_CMBID","message":"Usu\u00e1rio 2419399765 n\u00e3o encontrado"}
注意á被\u00e1代替,ã被\u00e3代替。
我该如何解决这个问题?
非常感谢。
阿尔弗雷多·奥利维拉
我在这里复制@andrewjames 的观察。由于这不是问题,因此我可以注意到这一点。所以,这就是解决方案。
不是答案 - 只是观察:消息仍然有效 JSON。 \u00e1 字符串是 JSON 存储 Unicode 转义字符的方式。因此,例如,您的 á 由该序列表示。因此,该消息不仅有效,而且等同于您的原始文本。此 JSON 的任何使用者本身都应使用 JSON 库,该库应正确处理这些转义序列 - 例如,如果 JSON 需要解析并且其文本需要显示给用户。 – andrewjames 5 月 13 日 22:01
我正在尝试使用 grails 3.3.11 在 RabbitMQ 中发布消息。但是我在巴西葡萄牙语字符方面遇到了麻烦。
好像是charset的问题,不知道怎么解决。有知道的请帮帮我
处理队列中的消息后,我的代码在另一个队列中发布状态。问题是我发布了一条消息,但是当我在RabbitMQ中看到消息时,消息被修改为错误的字符。专门针对 à、ç、õ、ú 等巴西语言字符。
那是我的队列发布代码,就是问题所在。
def publishNewStatus(String solicId, String newStatus, String message){
rabbitMessagePublisher.send {
exchange = "plt.cmbsolic.requests.status"
body = [requestId:solicId,status:newStatus,message:message]
}
}
这是发布的控制台结果。注意是正确的。
QUEUE CONSUMING => STARTED AT Thu May 13 17:58:49 BRT 2021
SOLICITATION ID STATUS => Status FAILED_IN_CMBID for solicitation 2419399765SOL01
API RESPONSE => Usuário 2419399765 não encontrado
QUEUE CONSUMING => FINISHED AT Thu May 13 17:58:49 BRT 2021
API response 是变量 message,方法 publishNewStatus 的第三个参数。
但是如果我去队列,那就是存储在那里的消息。
{"requestId":"2419399765SOL01","status":"FAILED_IN_CMBID","message":"Usu\u00e1rio 2419399765 n\u00e3o encontrado"}
注意á被\u00e1代替,ã被\u00e3代替。
我该如何解决这个问题?
非常感谢。
阿尔弗雷多·奥利维拉
我在这里复制@andrewjames 的观察。由于这不是问题,因此我可以注意到这一点。所以,这就是解决方案。
不是答案 - 只是观察:消息仍然有效 JSON。 \u00e1 字符串是 JSON 存储 Unicode 转义字符的方式。因此,例如,您的 á 由该序列表示。因此,该消息不仅有效,而且等同于您的原始文本。此 JSON 的任何使用者本身都应使用 JSON 库,该库应正确处理这些转义序列 - 例如,如果 JSON 需要解析并且其文本需要显示给用户。 – andrewjames 5 月 13 日 22:01