使用 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。
在 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。