Tag: amazon sqs

亚马逊sqs的异步消费者

我不熟悉队列。 我能够成功发布消息并同步接收它们但是,我现在正试图异步。 sqs提供的参考链接建议使用jmsclient包装器。 如果您已经有一个集成到jms客户端的代码,那么该链接还会提到使用它。 http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/jmsclient.html#samples 但我重新开始,我引用这个例子同步发送和recv消息。 https://github.com/aws/aws-sdk-java/blob/master/src/samples/AmazonSimpleQueueService/SimpleQueueServiceSample.java 我可以使用相同的代码,但使用消息监听器实现它吗? 任何代码示例将不胜感激。

亚马逊SNS – > SQS消息体

我正在从SNS主题向SQS发送消息。 当我在客户端检查SQS消息的正文时,整个消息元数据正在SQS正文中发送。 IE如果我从主题发送消息“Hello World”,我的客户端正在接收: BenFlowers { “Type” : “Notification”, “MessageId” : “84102bd5-8890-4ed5-aeba-c15fafc926dc”, “TopicArn” : “arn:aws:sns:eu-west-1:534706846367:HelloWorld”, “Message” : “hello World”, “Timestamp” : “2012-06-05T13:44:22.360Z”, “SignatureVersion” : “1”, “Signature” : “Qzh0qXhijBKylaFwc9PGE+lQQDwHGWkIzCW2Ld1eVrxNfSem4yyBTgouqGX26V0m1qhFD4RQcBzE3oNqx5jFhJfV4hN45FNcsFVnmfLPGNUTmJWblSk8f6znWgTy8UtK9xrTeNYzK59k3VJ4WTJ5kCEj+2vH7sBV15fAXeCAtdQ=”, “SigningCertURL” : “https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem”, “UnsubscribeURL” : “https://sns.eu-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-1:534706846367:HelloWorld:8a3acde2-cb0b-4a56-9b9c-b75ed7307556” } 这有点烦人,因为我不得不在另一端拆分消息正文。 速度在这个应用程序中非常重要,所以我想消除这一点。 有没有办法从SNS发送消息并忽略其余的元数据? 谢谢,本

从SQS检索多条消息

我在SQS中有多条消息。 以下代码始终只返回一个,即使有几十个可见(不在飞行中)。 setMaxNumberOfMessages我认为会允许多次被消耗掉。我误解了吗? CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName); String queueUrl = sqs.createQueue(createQueueRequest).getQueueUrl(); ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl); receiveMessageRequest.setMaxNumberOfMessages(10); List messages = sqs.receiveMessage(receiveMessageRequest).getMessages(); for (Message message : messages) { // i’m a message from SQS } 我也试过使用withMaxNumberOfMessages而没有任何运气: receiveMessageRequest.withMaxNumberOfMessages(10); 我怎么知道队列中有消息? 超过1? Set attrs = new HashSet(); attrs.add(“ApproximateNumberOfMessages”); CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName); GetQueueAttributesRequest a = new GetQueueAttributesRequest().withQueueUrl(sqs.createQueue(createQueueRequest).getQueueUrl()).withAttributeNames(attrs); […]

Amazon SQS长轮询不返回所有邮件

我需要在1次读取中读取Amazon SQS队列中的所有消息,然后根据创建的时间戳对其进行排序并对其执行业务逻辑。 为了确保检查所有SQS主机的消息,我启用了长轮询。 我这样做的方法是将队列的默认等待时间设置为10秒。 (任何大于0的值都将启用长轮询)。 但是,当我尝试读取队列时,它仍然没有给我所有的消息,我不得不做多次读取以获取所有消息。 我甚至通过每个接收请求的代码启用长轮询,仍然无法正常工作。 以下是我正在使用的代码。 AmazonSQSClient sqsClient = new AmazonSQSClient(new ClasspathPropertiesFileCredentialsProvider()); sqsClient.setEndpoint(“sqs.us-west-1.amazonaws.com”); String queueUrl = “https://sqs.us-west-1.amazonaws.com/12345/queueName”; ReceiveMessageRequest receiveRequest = new ReceiveMessageRequest().withQueueUrl(queueUrl).withMaxNumberOfMessages(10).withWaitTimeSeconds(20); List messages = sqsClient.receiveMessage(receiveRequest).getMessages(); 我在队列中有3条消息,每次运行代码时都得到不同的结果,有时候我得到所有3条消息,有时只有1条。可见性超时我设置为2秒,只是为了消除消息变得不可见的原因因为没有在阅读中看到它们。 这是短轮询的预期行为。 长轮询应该可以消除多个民意调查。 我在这里做错了吗? 谢谢

在我的Storm集群中读取AWS SQS队列时,导致这些ParseErrorexception的原因是什么

我正在使用Storm 0.8.1从Amazon SQS队列中读取传入消息,并在执行此操作时获得一致的exception: 2013-12-02 02:21:38 executor [ERROR] java.lang.RuntimeException: com.amazonaws.AmazonClientException: Unable to unmarshall response (ParseError at [row,col]:[1,1] Message: JAXP00010001: The parser has encountered more than “64000” entity expansions in this document; this is the limit imposed by the JDK.) at REDACTED.spouts.SqsQueueSpout.handleNextTuple(SqsQueueSpout.java:219) at REDACTED.spouts.SqsQueueSpout.nextTuple(SqsQueueSpout.java:88) at backtype.storm.daemon.executor$fn__3976$fn__4017$fn__4018.invoke(executor.clj:447) at backtype.storm.util$async_loop$fn__465.invoke(util.clj:377) at clojure.lang.AFn.run(AFn.java:24) at java.lang.Thread.run(Thread.java:701) Caused by: com.amazonaws.AmazonClientException: Unable to […]