无法使用 boto SDK 在 java SqsListener 中侦听从 python 生成的 SQS 消息

Unable to listen the SQS messages in java SqsListener produced from the python using boto SDK

我正在使用 boto SDK 将消息发送到 Amazon-SQS。无论我发送什么消息,它都必须使用 java.When 中编写的 SqsListener 进行侦听.在 SQSListener class 中,我只是尝试打印我收到的消息。我收到的是加密形式的消息,而不是实际消息。

实际消息: 示例消息

收到消息 U2FtcGxlIG1lc3NhZ2U=

producerclass写在python是:

from boto import sqs
import json
from boto.sqs.message import Message 

conn = sqs.connect_to_region('XXXXX', aws_access_key_id='XXXXXXXXXXXX', aws_secret_access_key='XXXXXXXXXXXXXXXXXXXXXXX')
queueInstance = conn.get_queue('sample')
try:
   message = Message()    
   message.set_body("testing sample")
   queueInstance.write(message)
except Exception, error:
   print error

接收器 SQSListener class 是:

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;


public class SQSMessageLisner implements MessageListener {

public void onMessage(Message message) {
    try {
        System.out.println("Inside ON MESSAGE");
        //System.out.println(message.get);
        String stringMessage = ((TextMessage) message).getText();
        System.out.println(stringMessage);
    } catch (JMSException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}

消息的发送和接收都是用相同的 SDK 编写的,工作正常。从 python 发送并在 java 中收听会导致此问题。请帮我解决这个问题。提前致谢。

您在接收器中收到一条 base64 编码的消息。您需要解码它,如此处所述 Decode Base64 data in Java

您的另一个选择是在 python 中使用 boto.sqs.message.RawMessage 而不是 TextMessage,后者不会被编码。