如何在 RabbitMQ 策略中设置多个模式

Posted

技术标签:

【中文标题】如何在 RabbitMQ 策略中设置多个模式【英文标题】:How to set multiple patterns in RabbitMQ policy 【发布时间】:2021-04-02 18:59:57 【问题描述】:

我正在尝试在 RabbitMQ 中创建一个匹配多个模式的新策略。但是,以下选项不起作用。请建议在 RabbitMQ 中设置多个模式的正确方法。

需要使与名称匹配的队列过期(一段时间后)test.、Test.、TEST.*

模式不起作用,

    我尝试使用策略消息 TTL 和模式为 test.*, Test.*, TEST.* 我也试过/G[test].*/i ==>不区分大小写的正则表达式

以下作品,

    仅当我为 test.*TEST.* 设置单独的策略时,rabbitmq 才会识别。

以下是我希望正则表达式匹配的主要队列名称集,

Service-ManualTest
TEST.service.mail
TESTCreateQueue
Test reindex            
Test.profile.queue      
Testing.service.results     
My_TestQueue    
status.queue.test   
test myQueue
testbulkupload.auto.manual
testreportqueue

【问题讨论】:

你试过[Tt][Ee][Ss][Tt].*(?i)test.*吗? 那行得通@Thefourthbird。谢谢。 【参考方案1】:

使用模式test.*, Test.*, TEST.* 将匹配一个字符串,例如这个字符串test, Test, TEST 包含3 次单词test。

使用模式G[test].*(可以写成G[tse].*)将匹配例如GtGs,可选地后跟任何字符。

例如在 javascript 中,/ 开头和结尾的格式是分隔符,/i 是不区分大小写的标志。

如果您只想匹配所有 3 种测试变体,则可以使用此模式而不使用 .*

(?:[Tt]est|TEST)

如果支持内联修饰符,您可以使用(?i)test.* 获得不区分大小写的匹配,或者使用字符类[Tt][Ee][Ss][Tt].* 列出所有选项的详细版本

【讨论】:

以上是关于如何在 RabbitMQ 策略中设置多个模式的主要内容,如果未能解决你的问题,请参考以下文章

Cloudformation - 如何在代码中设置 SNS 订阅的过滤策略?

如何在 Spring Data JPA 中设置 Hibernate 命名策略

如何在 Mongoose 的所有模式中设置公共属性?

如何在 Java 应用程序中设置锁定模式

如何在 RESTkit 0.2 中设置缓存策略

如何在 Swift 4 CoreData 中设置合并策略