【问题标题】:AWS SQS as JMS, messages sent/received from an on-premise appAWS SQS 作为 JMS,从本地应用程序发送/接收的消息
【发布时间】:2017-07-12 12:11:21
【问题描述】:

我是 AWS 的新手,Java 经验有限。但是,我的任务是帮助支持混合解决方案,其中安装在本地的 Java 客户端应用程序将 JMS 消息 (Spring JMS) 发送到 Amazon SQS。在 EC2 上运行的服务器应用程序将从 SQS 获取消息,对其进行处理并将响应消息放入另一个队列。然后同一个客户端应用程序将获取响应消息并完成该过程。

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

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

亲切的问候

艾伦 H.

【问题讨论】:

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


    【解决方案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。我承认我不确定投票费用。在“空”民意调查中传输了一些数据,但我不确定这将花费多少。

    【讨论】:

    • 感谢您的回复。那么这段代码可以在本地运行并向SQS发送消息吗?不太确定您的 JMS 答案,所以让我尝试更清楚一点:我可以使用 JMS(SQS 应该支持 JMS 1.1)并启用一些内部部署的安全性(例如 SSL)来向/从 SQS 发送/接收消息吗?
    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    相关资源
    最近更新 更多