ActiveMQ JobScheduler 删除消息

ActiveMQ JobScheduler remove message

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

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

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

您可以通过 STOMP 管理 ActiveMQ 中的计划作业。我已经 written about this before 展示了如何使用 ActiveMQ Java 客户端来做到这一点,但原理是一样的。您可以发送具有特定 headers 集的消息,这些消息将对计划的消息进行操作。

要删除使用 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 中只需使用每个的字符串文字作为消息 属性 .