7.7. JMS-style Selector


SQS 不允许选择器,但您可以使用 Camel Filter EIP 和设置适当的 可见Timeout 来有效地达到此目的。当 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");

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

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.