使用 Mutiny 和 Quarkus 迭代 AWS SQS 消息列表
Iterate list of AWS SQS messages using Mutiny and Quarkus
刚刚了解 Mutiny API(和 java 直播 api)...
我有以下代码可以从 AWS SQS 队列中读取消息,参考:quarkus sqs guide
Uni<List<Quark>> result =Uni.createFrom()
.completionStage(sqs.receiveMessage(m -> m.maxNumberOfMessages(10).queueUrl(queueUrl)))
.onItem().transform(ReceiveMessageResponse::messages)
.onItem().transform(m -> m.stream().map(Message::body).map(this::toQuark).collect(Collectors.toList()));
接下来我想将列表中的每个元素发送到一个方法handleMessage(Quark quark)
。我如何以“叛变的方式”做到这一点!是需要再变身还是不收..还是?
此刻,你得到一个Uni<List<Quark>>
。 Mutiny 方法是将其转换为 Multi
并处理每个项目:
Multi<Quark> multi = result.onItem().transformToMulti(list -> Multi.createFrom().items(list));
Multi 是一个流。每一项都是 Quark
。然后,您只需执行以下操作:
multi.onItem().invoke(q -> handleMessage(q))
我用了invoke
因为我不知道handleMessage
在做什么。如果它正在处理 Quark 和 returning 某些东西,请使用 transform
。如果它没有 return 任何东西,请使用 invoke
.
顺便说一句,不要忘记订阅 returned Multi。
刚刚了解 Mutiny API(和 java 直播 api)...
我有以下代码可以从 AWS SQS 队列中读取消息,参考:quarkus sqs guide
Uni<List<Quark>> result =Uni.createFrom()
.completionStage(sqs.receiveMessage(m -> m.maxNumberOfMessages(10).queueUrl(queueUrl)))
.onItem().transform(ReceiveMessageResponse::messages)
.onItem().transform(m -> m.stream().map(Message::body).map(this::toQuark).collect(Collectors.toList()));
接下来我想将列表中的每个元素发送到一个方法handleMessage(Quark quark)
。我如何以“叛变的方式”做到这一点!是需要再变身还是不收..还是?
此刻,你得到一个Uni<List<Quark>>
。 Mutiny 方法是将其转换为 Multi
并处理每个项目:
Multi<Quark> multi = result.onItem().transformToMulti(list -> Multi.createFrom().items(list));
Multi 是一个流。每一项都是 Quark
。然后,您只需执行以下操作:
multi.onItem().invoke(q -> handleMessage(q))
我用了invoke
因为我不知道handleMessage
在做什么。如果它正在处理 Quark 和 returning 某些东西,请使用 transform
。如果它没有 return 任何东西,请使用 invoke
.
顺便说一句,不要忘记订阅 returned Multi。