是否可以通过Stomp从PHP订阅到ActiveMQ代理并访问JobScheduler(并随后通过其jobId删除预定的消息)?
我有一组用于从2个Web服务器生成的队列“PROD”的预定消息,并且在同一Web服务器上发生事件(知道jobIds)时,想要从JobScheduler中删除它们,以便消费者(用Java编写并位于多个远程服务器上)不接收它们。
我正在使用ActiveMQ broker v5.9.1,并且Stomp连接到代理PHP表单。
答案 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中只使用每个字符串文字作为消息属性。