ActiveMQ JobScheduler удалить сообщение

Можно ли подписаться из PHP через Stomp на брокер ActiveMQ и получить доступ к JobScheduler (и впоследствии удалить запланированное сообщение по его jobId)?

У меня есть набор запланированных сообщений для очереди «PROD», созданных на 2 веб-серверах, и при возникновении события на одном и том же веб-сервере (с учетом идентификаторов заданий) я хотел бы удалить их из JobScheduler, чтобы потребители ( написаны на Java и расположены на нескольких удаленных серверах) не получают их.

Я использую ActiveMQ broker v5.9.1 и Stomp для подключения к брокеру из PHP.

0

Решение

Вы можете управлять запланированными заданиями в 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 просто используйте строковый литерал каждого в качестве свойства сообщения.

2

Другие решения

Других решений пока нет …