【问题标题】:Connecting to SQS with JMS using Java 1.6使用 Java 1.6 通过 JMS 连接到 SQS
【发布时间】:2015-12-17 21:03:33
【问题描述】:

在 Java 1.6 中使用 AWS 的 JMS SQSConnectionFactory 连接到 SQS 时出现“不支持的 major.minor 版本 51.0 错误”。它适用于 Java 1.7

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

【问题讨论】:

    标签: jms amazon-sqs


    【解决方案1】:

    它看起来像是为 Java 7 编译的。

    您可以下载源代码并为 Java 6 编译它。

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

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

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

    【讨论】:

      【解决方案2】:

      对于那些仍在寻找 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 文件末尾添加权限:

      授予{
      权限 java.lang.RuntimePermission "getenv.AWS_PROFILE";
      权限 java.lang.RuntimePermission "getenv.HTTPS_PROXY";
      权限 java.lang.RuntimePermission "getenv.https_proxy";
      权限 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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-31
        • 2012-03-10
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多