使用 Java 1.6 通过 JMS 连接到 SQS

Connecting to SQS with JMS using Java 1.6

在 Java 1.6 中使用 AWS 的 JMS SQSConnectionFactory 连接到 SQS 时,我得到一个 "Unsupported major.minor version 51.0 error"。它适用于 Java 1.7

我没有找到任何文件明确说明它与 1.6 不兼容 有人管理过吗?有什么建议么?

看起来是为 Java 7.

编译的

您可以下载源代码并为 Java 6.

编译它

https://github.com/awslabs/amazon-sqs-java-messaging-lib

您可能需要对源代码做一些更改,例如从某些测试中删除菱形运算符 <>

当您打开上述页面时,README.md中有最低要求,其中指定java的最低版本为7。

对于那些仍在寻找 Java 6 解决方案的人,这里是我在 IBM Domino 9 服务器上工作的方法,它仍然是 运行 java 6。 希望它能帮助你走得更远。

我从 maven repository.

下载了一个旧的 sdk 版本 1.11.664(及其依赖项)

将 jar 文件放入 /jvm/lib/ext 文件夹:

joda-time-2.8.1.jar
httpcore-4.4.11.jar
httpclient-4.5.9.jar
aws-java-sdk-sqs-1.11.664.jar
aws-java-sdk-1.11.664.jar
aws-java-sdk-core-1.11.664.jar
jmespath-java-1.11.664.jar

将权限添加到 java.policy 文件的末尾:

grant {
permission java.lang.RuntimePermission "getenv.AWS_PROFILE";
permission java.lang.RuntimePermission "getenv.HTTPS_PROXY";
permission java.lang.RuntimePermission "getenv.https_proxy";
permission java.lang.RuntimePermission "getenv.AWS_CSM_ENABLED";
};

示例代码如下(删除了一些供应商特定的部分):

package com.javasix.awssqs;
 
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.Message;
import com.amazonaws.services.sqs.model.SendMessageRequest;
 
import java.util.List;
 
public class SendRecieveMessages {
      private static final String ACCESS_KEY_ID = "ACCESS_KEY_ID";
      private static final String SECRET_ACCESS_KEY = "SECRET_ACCESS_KEY";
      private static final String QUEUE_NAME = "QUEUE_URL";
 
      public static void main(String[] args) {
 
            BasicAWSCredentials awsCreds = new BasicAWSCredentials(ACCESS_KEY_ID,
                        SECRET_ACCESS_KEY);
 
            final AmazonSQS sqs = AmazonSQSClientBuilder.standard().withRegion(
                        Regions.US_EAST_1).withCredentials(
                        new AWSStaticCredentialsProvider(awsCreds)).build();
 
            // Send message
            String message = "Java 6 test message";
            SendMessageRequest sendMessageStandardQueue = new SendMessageRequest()
                        .withQueueUrl(QUEUE_NAME).withMessageBody(message)
                        .withDelaySeconds(5);
            sqs.sendMessage(sendMessageStandardQueue);
 
            // receive messages from the queue
            List<Message> messages = sqs.receiveMessage(QUEUE_NAME).getMessages();
 
            for (Message m : messages) {
                  // Do something with your message here
 
                  // delete messages from the queue
                  sqs.deleteMessage(QUEUE_NAME, m.getReceiptHandle());
            }
      }
}

这使我能够连接到 AWS SQS。