如何在 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].*
)将匹配例如Gt
或Gs
,可选地后跟任何字符。
例如在 javascript 中,/
开头和结尾的格式是分隔符,/i
是不区分大小写的标志。
如果您只想匹配所有 3 种测试变体,则可以使用此模式而不使用 .*
(?:[Tt]est|TEST)
如果支持内联修饰符,您可以使用(?i)test.*
获得不区分大小写的匹配,或者使用字符类[Tt][Ee][Ss][Tt].*
列出所有选项的详细版本
【讨论】:
以上是关于如何在 RabbitMQ 策略中设置多个模式的主要内容,如果未能解决你的问题,请参考以下文章
Cloudformation - 如何在代码中设置 SNS 订阅的过滤策略?