AWS SQS作为JMS,从内部部署应用程序发送/接收的消息

时间:2017-02-22 12:31:12

标签: amazon-web-services jms amazon-sqs spring-jms

我对AWS完全不熟悉并且Java体验有限。但是,我的任务是帮助支持混合解决方案,其中内部安装的Java客户端应用程序正在向Amazon SQS发送JMS消息(Spring JMS)。在EC2上运行的服务器应用程序将从SQS获取消息,处理它并将响应消息发送到另一个队列。然后,相同的客户端应用程序将获取响应消息并完成该过程。

我的问题是,本地安装的客户端应用程序是否可以使用JMS向Amazon SQS发送消息?如果是,消息交换如何安全(SSL)?

其他问题:AWS的收费率为每百万条消息0.4美元。当我的客户端应用程序执行轮询请求时,即使队列为空,它们是否会被视为消息?

亲切的问候

Allan H.

1 个答案:

答案 0 :(得分:1)

内部部署应用程序可以轻松地将消息发送到SQS队列。它可以从JMS转换这些消息并通过SQS发送它们。所有AWS端点都支持SSL(有关端点名称,请参阅this list),虽然您可以使用HTTP,但默认值为HTTPS。

在标准的JEE中,代码如下所示 - 转换为Spring应该不错:

@MessageDriven(...)
public class MyMessageListener implements MessageListener {
    @Override
    public void onMessage(Message message) {
        ObjectMessage objectMessage = (ObjectMessage) message;

        MyObject myObject = (MyObject)(objectMessage.getObject());
        // stringify myObject - just an example
        String stringToSend = new Gson().toJson(myObject);

        SendMessageRequest sendMessageRequest = new SendMessageRequest()
                    .withQueueUrl(queueUrl)
                    .withMessageBody(stringToSend);

        amazonSQS.sendMessage(sendMessageRequest);
    }
}

此代码省略了初始化,但希望能让您了解所需的内容。

就成本而言,您显然已经看到了SQS pricing page。我承认我不确定投票费用。有一些数据是在“空”的民意调查中转移的,但我并不认为这会花费多少。