Я хочу внедрить JMS-очередь, чтобы каждое сообщение доставлялось только одному потребителю. При прослушивании очереди будет много разных типов потребителей. У сообщений должны быть установлены свойства, определяющие тип требуемой работы, и они используются селектором потребителей, чтобы гарантировать, что они получают только отправленную работу, которую они могут обработать.
У меня вопрос: как я могу убедиться, что, когда потребитель регистрируется в очереди в качестве потребителя, он реализует селектор, чтобы избежать следующего сценария.
Если у меня есть 3 типа сообщений (A, B и C) и 3 потребителя (a, b и c), каждый из которых потребляет только 1 тип сообщения следующим образом: a-> A b-> B c-> C, тогда все сообщения типа A будут отправлены 1, все сообщения типа B будут отправлены 2 и т. д.
Я хочу запретить кому-либо регистрировать нового потребителя (d), у которого нет селектора, потому что этот потребитель будет означать, что сообщения типа A, B, C теперь будут отправляться их предполагаемому потребителю или, возможно, потребителю d.
В качестве альтернативы, я бы хотел, чтобы очередь отдавала предпочтение потребителям, у которых есть селектор, совпадающий с потребителем без селектора.
Ps. Список возможных потребителей и типов сообщений является динамическим и не находится под моим контролем, поэтому у меня нет очереди для каждого типа сообщений.