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

时间:2015-03-23 07:16:03

标签: java python amazon-web-services boto amazon-sqs

我正在使用boto SDK将消息发送到Amazon-SQS。无论我发送什么消息,它都必须使用java编写的SqsListener进行监听。当我发送消息时,我无法获得从python编写的生成器类发送的确切消息。在SQSListener类中,我只是尝试打印我得到的消息。我正在获取加密形式的消息而不是实际消息。

实际消息: 示例消息

收到消息 U2FtcGxlIG1lc3NhZ2U =

在python中编写的 producer 类是:

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

Receiver SQSListener类是:

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中监听会导致这个问题。请帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:3)

您的接收器中会收到base64编码的消息。您需要对其进行解码,如Decode Base64 data in Java

所述

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