【问题标题】:ActiveMQ JobScheduler remove messageActiveMQ JobScheduler 删除消息
【发布时间】:2015-11-24 16:48:03
【问题描述】:

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

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

我正在使用 ActiveMQ 代理 v5.9.1,并使用 Stomp 连接到 PHP 形式的代理。

【问题讨论】:

    标签: php activemq scheduling stomp


    【解决方案1】:

    您可以通过 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 中只需使用每个字符串文字作为消息属性。

    【讨论】:

    • 谢谢@tim-bish 我会去看看!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-04-02
    • 2012-07-09
    • 2013-09-30
    • 2011-12-25
    • 2019-12-27
    • 2018-09-28
    • 2013-06-25
    • 2017-12-22
    相关资源
    最近更新 更多