Можно ли подписаться из PHP через Stomp на брокер ActiveMQ и получить доступ к JobScheduler (и впоследствии удалить запланированное сообщение по его jobId)?
У меня есть набор запланированных сообщений для очереди «PROD», созданных на 2 веб-серверах, и при возникновении события на одном и том же веб-сервере (с учетом идентификаторов заданий) я хотел бы удалить их из JobScheduler, чтобы потребители ( написаны на Java и расположены на нескольких удаленных серверах) не получают их.
Я использую ActiveMQ broker v5.9.1 и Stomp для подключения к брокеру из PHP.
Вы можете управлять запланированными заданиями в ActiveMQ через STOMP. Я написано об этом раньше показывая, как это сделать с помощью Java-клиента ActiveMQ, но принцип тот же. Вы можете отправлять сообщения с определенным набором заголовков, которые будут работать с запланированными сообщениями.
Чтобы удалить сообщение, которое было запланировано с помощью Java-клиента, вы должны сделать следующее:
Message remove = session.createMessage();
remove.setStringProperty(ScheduledMessage.AMQ_SCHEDULER_ACTION,
ScheduledMessage.AMQ_SCHEDULER_ACTION_REMOVE);
remove.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_ID,
scheduled.getStringProperty(ScheduledMessage.AMQ_SCHEDULED_ID));
producer.send(remove);
Полный набор значений свойств сообщений, которые можно использовать при работе с планировщиком, документирован Вот, в STOMP просто используйте строковый литерал каждого в качестве свойства сообщения.
Других решений пока нет …