我正在尝试将一些Java代码与我在AWS上制作的SQS队列进行接口。我已经开始编写一个测试,以获得我想要的行为(即编写和接收消息),它的行为似乎非常奇怪。下面是我的测试代码:
@Test
public void testMessagesAreSentToQueue() {
sqs.sendMessage(queueUrl, "TEST MESSAGE1");
sqs.sendMessage(queueUrl, "TEST MESSAGE2");
sqs.sendMessage(queueUrl, "TEST MESSAGE3");
ReceiveMessageRequest req = new ReceiveMessageRequest().withQueueUrl(queueUrl).withWaitTimeSeconds(20);
List<Message> messagesInQueue = sqs.receiveMessage(req).getMessages();
assertThat(messagesInQueue.size()).isEqualTo(3);
assertThat(messagesInQueue.get(0).getBody()).isEqualTo("TEST MESSAGE1");
assertThat(messagesInQueue.get(1).getBody()).isEqualTo("TEST MESSAGE2");
assertThat(messagesInQueue.get(2).getBody()).isEqualTo("TEST MESSAGE3");
}
我是不是误解了SQS在这里的工作方式?我希望能够发送和接收回任何数量的消息我想要。
编辑--我正在使用maxNumberOfMessages并重复长轮询请求,直到队列耗尽为止(这里有更多内容--Amazon SQS长轮询不返回所有消息)
查看ReceiveMessageRequest的API文档,它似乎默认为每个调用最多检索1条消息。使用New ReceiveMessageRequest().WithMaxNumberOfMessages(3)
增加该数字可能会解决您的问题,但仍可能无法如您所期望的那样工作,因为文档还说明:
如果队列中的消息数量很少(小于1000),那么您获得的消息可能少于您在每次ReceiveMessage调用中请求的消息。如果队列中的消息数量极少,则可能无法在特定的ReceiveMessage响应中接收到任何消息;在这种情况下,您应该重复请求。
当使用JavaSDK(0.4.1)从SB队列检索消息时,即使所讨论的队列为空,也会返回非空。对该结果调用将返回一个非空的。我怎么知道我在一个空队列上打了接听电话?显然,在分布式并发系统中,查询大小不是一个选项。 我使用模式,队列是新创建的,所以我知道它是空的。 根据docs,对API的底层调用应该返回204的状态码。在返回的结果或消息中,我找不到任何方法访问该代码。
我正在使用EclipseIDE编程。在完成有关Apache POI的教程后: https://www.youtube.com/watch?v=RsrF2Ku7ad4 我通过eclipse和以下链接创建了一个可执行jar:http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-37.htm
我正在做一个项目,我的意图是运行一个玉米作业,并发送邮件给我的朋友,祝他们生日,我能够从MySQL DB获取电子邮件,并将其与当前日期进行比较,但当涉及到发送电子邮件时,我得到NullPointerException。 我确信应用程序属性没有问题,我在其他项目中也使用了它们,它们的功能正常 这是我得到以下信息的错误
问题内容: 因此,我发现了有关JQuery的类似问题,您无需在其中进行解析。由于我使用的是AJAX XMLHttpRequest,据我所知,解析是必要的。错误在行上给出: 错误: 功能的相关部分: 返回的JSON如下所示(不包含换行符): JSONLint表示以上内容有效。我想我将看看XMLHttpRequest是否做任何奇怪的事情。Firefox继续运行(即使firebug显示错误),IE9仍在
我试图发布一个新的条目到MongoDB,我知道这个问题是我在服务器文件中调用我的路由的地方,但我不知道如何解决这个问题。我需要能够测试在邮递员的API和张贴到数据库。 我得到以下错误: /users/ryan/desktop/leasequery/operations-backend/node_modules/express/lib/router/index.js:458抛出新的TypeError
问题内容: 我在我的角度应用程序中定义了以下服务: 我正在编写以下规范对其进行测试: 每当我运行测试时,第一个测试通过,但第二个测试产生错误: 我究竟做错了什么? 编辑: 原来,我已经配置是这样的… 。但是我在打电话给我。注意缺少“ /”。一旦我添加了斜线,一切都很好:) 问题答案: 您需要告诉$ httpBackend期待GET请求。 或者,您可以穿上自己的衣服。我更喜欢用那种方式陈述我的陈述,