搜索

8.7. JMS 风格的 Selectors

download PDF

SQS 不允许选择器,但您可以使用 Camel Filter EIP 并设置适当的 visibilityTimeout。当 SQS 分配消息时,它将等待可见超时,然后尝试将消息发送到不同的消费者,除非收到 DeleteMessage。默认情况下,Camel 始终会在路由末尾发送 DeleteMessage,除非路由失败。要实现适当的过滤,在成功完成路由时也不会发送 DeleteMessage,请使用 Filter:

from("aws2-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false&deleteAfterRead=false")
.filter("${header.login} == true")
  .setProperty(Sqs2Constants.SQS_DELETE_FILTERED, constant(true))
  .to("mock:filter");

在上面的代码中,如果交换没有适当的标头,则不会通过过滤器 AND 进行它,也不会从 SQS 队列中删除。5000 毫秒后,消息对其他消费者可见。

请注意,必须将属性 Sqs2Constants.SQS_DELETE_FILTERED 设置为 true,以指示 Camel 发送 DeleteMessage (如果过滤)。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.