11.8. jms-style Selectors


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.