2015-08-30 4 views
0

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

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

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

ответ

2

Вы можете управлять запланированными заданиями в ActiveMQ через STOMP. У меня есть written about this before, показывающий, как это сделать, используя клиент ActiveMQ Java, но принцип тот же. Вы можете отправлять сообщения с определенными наборами заголовков, которые будут работать с запланированными сообщениями.

Чтобы удалить сообщение, которое было запланировано с помощью клиента 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); 

Полный набор значений свойств сообщений, которые могут быть использованы при работе с планировщиком задокументированы here, в STOMP просто использует строковый литерал каждого в качестве свойства сообщения.

+0

Спасибо @ tim-bish Я отдам его и посмотрю! очень признателен! –

Смежные вопросы