Boj*_*ski 5 java jms message-queue amazon-sqs amazon-web-services
我正在将Amazon SQS与带有Java EE 7的Amazon SQS-JMS Java库一起使用。我想要实现的是在收到一条消息之后,根据应用程序的业务逻辑,是确认(使用)消息还是再次将其重新发送到队列,然后重试3次失败后,将其移至DLQ。
我虽然要在JMS中使用CLIENT_Acknowledge模式,并且只确认已成功处理的消息,但这来自其官方文档:
在这种模式下,当确认一条消息时,在此消息之前收到的所有消息也会被隐式确认。例如,如果接收到10条消息,并且仅确认了第10条消息(按照接收消息的顺序),则前面的9条消息也全部被确认。
这个示例似乎也证实了这一点:http : //docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/code-examples.html#example-synchronous-receiver-client-acknowledge-mode。
对我来说,这是一种奇怪的行为,与我对client_acknowledge的期望相反。除了根据过程状态手动将整个代码中的消息手动发送到主SQS队列或DLQ之外,还有一种更优雅的解决方案吗?
小智 5
您可以使用:
UNORDERED_ACKNOWLEDGE
SQSSession.UNORDERED_ACKNOWLEDGE
来自“com.amazon.sqs.javamessaging;” 正如文档中所述,它是 Client_Acknowledge 的变体,它仅确认调用它的消息。
/**
* Non standard acknowledge mode. This is a variation of CLIENT_ACKNOWLEDGE
* where Clients need to remember to call acknowledge on message. Difference
* is that calling acknowledge on a message only acknowledge the message
* being called.
*/
Run Code Online (Sandbox Code Playgroud)
依赖项示例:“com.amazonaws:amazon-sqs-java-messaging-lib:1.0.3”
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |