ActiveMQ JobScheduler删除邮件

时间:2015-08-30 15:00:12

标签: php activemq scheduling stomp

是否可以通过Stomp从PHP订阅到ActiveMQ代理并访问JobScheduler(并随后通过其jobId删除预定的消息)?

我有一组用于从2个Web服务器生成的队列“PROD”的预定消息,并且在同一Web服务器上发生事件(知道jobIds)时,想要从JobScheduler中删除它们,以便消费者(用Java编写并位于多个远程服务器上)不接收它们。

我正在使用ActiveMQ broker v5.9.1,并且Stomp连接到代理PHP表单。

1 个答案:

答案 0 :(得分:2)

您可以通过STOMP管理ActiveMQ中的预定作业。我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中只使用每个字符串文字作为消息属性。