В моем распределенном приложении я отправляю запросы на обработку в очередь JMS. У меня есть несколько узлов, потребляющих из этой очереди (балансировка нагрузки). Обработка запросов требует загрузки в память довольно большого количества пользовательских данных, и я, очевидно, хочу сохранить эти данные в памяти для последующих запросов. Таким образом, я использую JMSXGroupId с идентификатором пользователя, чтобы убедиться, что все запросы для конкретного пользователя обрабатываются узлом, который уже кэшировал данные.
Через некоторое время, когда пользователь больше не активен, я хочу выгрузить данные на узле. В то же время я хотел бы, чтобы этот узел отказался от владения связанной группой сообщений JMS.
Я знаю, что отказываюсь от владения группой, закрывая соответствующего потребителя. Однако это означало бы, что я потеряю право собственности на все группы, связанные с этим потребителем, а не только на ту, для которой я только что выгружал кэшированные данные.
Есть ли способ отказаться от владения определенной группой на стороне потребителя?
Предпочтителен независимый от брокера способ, но я бы согласился на решение, специфичное для ActiveMQ, если это единственный путь. Кроме того, не стесняйтесь предлагать, как это можно сделать с вашим любимым брокером сообщений.