Я настраиваю учетные записи пользователей и разрешения для RabbitMQ. Идея состоит в том, что пользователи называются «user1», «user2», ... и есть отдельная очередь «все пользователи», к которой, как вы уже догадались, могут обращаться все пользователи.
Я придумал следующее регулярное выражение:
^user[0-9]+|all\-users$
и проверено на https://regex101.com/
bob [no match]
alice [no match]
user5 [match]
user99 [match]
user [no match]
all-users [match]
Это работает, как и ожидалось. Однако то же самое не верно для моего RabbitMQ. В частности, при публикации на all-users
с использованием любой учетной записи user{n}
я получаю 403 - ACCESS REFUSED
. Если я изменяю разрешение на запись на .*
, оно работает нормально, но это не то, что я хочу.
I также попробовал следующие модификации моего регулярного выражения, ни одна из которых не работает в RabbitMQ, но они в основном работают в регулярном выражении regex101:
^user[0-9]+|^all-users$
(без экранирования da sh) ^(user[0-9]+|all-users)$
(только с одним набором скобок) ^user[0-9]+|^all\\-users$
(двойное экранирование da sh - не работает) ^(user[0-9]+)|(all\-users)$
(с использованием групп) (^user[0-9]+$)|(^all\-users$)
(с использованием маркеров начала / конца в группах) ^user[0-9]+|^all\-users
(без маркера конца - также в сочетании с группами) user[0-9]+|all-users
(пропуская все маркеры)
Я знаю, что другие люди задавали подобные вопросы ( здесь или здесь ), но (как и мой собственный вопрос) они все они довольно точны c и не сильно мне помогают в моей проблеме.
PS: я использую интерфейс управления RabbitMQ для установки разрешений для упрощения отладки, но установка их в командной строке точно такой же эффект