ActiveMQ JobScheduler删除消息


ActiveMQ JobScheduler remove message

是否可以通过Stomp从PHP订阅ActiveMQ代理并访问JobScheduler(然后通过jobId删除已调度的消息)?

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

我使用ActiveMQ代理v5.9.1, Stomp连接到代理形式PHP

您可以通过STOMP管理ActiveMQ中的计划作业。在展示如何使用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);

在使用调度器时可以使用的完整消息属性值集在这里有文档说明,在STOMP中只使用每个消息属性的字符串字面值作为消息属性。