Activemq 预定作业 ID
Active MQ Scheduled Job Id
我在 Java Spring 中使用 ActiveMQ。我启用了调度程序,并且设法创建了预定作业(以编程方式)。我还设法编写了一种根据作业 ID 删除它们的方法。我一直在使用 JmsTemplate 来浏览队列,但它只在队列有一些消息等待时才有效。队列为空时找不到工作ID。
我的问题是我应该如何获得预定的工作 ID?
根据您的问题,您似乎想查看安排了哪些消息,因此您需要创建一个在名为“ActiveMQ.Scheduler.Management”的目标上发布的生产者。完成后,您将创建一个新消息并设置一些属性并添加一个回复目标,以便调度程序知道将您的消息发送到哪里。然后,您需要做的就是使用订阅了该回复目标的消费者处理消息。
Connection connection = createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the Browse Destination and the Reply To location
Destination requestBrowse = session.createTopic(ScheduledMessage.AMQ_SCHEDULER_MANAGEMENT_DESTINATION);
Destination browseDest = session.createTemporaryQueue();
// Create the "Browser"
MessageConsumer browser = session.createConsumer(browseDest);
connection.start();
// Send the browse request
MessageProducer producer = session.createProducer(requestBrowse);
Message request = session.createMessage();
request.setStringProperty(ScheduledMessage.AMQ_SCHEDULER_ACTION,
ScheduledMessage.AMQ_SCHEDULER_ACTION_BROWSE);
request.setJMSReplyTo(browseDest);
producer.send(request);
Message scheduled = browser.receive(5000);
while (scheduled != null) {
// Do something clever...
}
其他详细信息记录在 this blog post 中。
我在 Java Spring 中使用 ActiveMQ。我启用了调度程序,并且设法创建了预定作业(以编程方式)。我还设法编写了一种根据作业 ID 删除它们的方法。我一直在使用 JmsTemplate 来浏览队列,但它只在队列有一些消息等待时才有效。队列为空时找不到工作ID。
我的问题是我应该如何获得预定的工作 ID?
根据您的问题,您似乎想查看安排了哪些消息,因此您需要创建一个在名为“ActiveMQ.Scheduler.Management”的目标上发布的生产者。完成后,您将创建一个新消息并设置一些属性并添加一个回复目标,以便调度程序知道将您的消息发送到哪里。然后,您需要做的就是使用订阅了该回复目标的消费者处理消息。
Connection connection = createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the Browse Destination and the Reply To location
Destination requestBrowse = session.createTopic(ScheduledMessage.AMQ_SCHEDULER_MANAGEMENT_DESTINATION);
Destination browseDest = session.createTemporaryQueue();
// Create the "Browser"
MessageConsumer browser = session.createConsumer(browseDest);
connection.start();
// Send the browse request
MessageProducer producer = session.createProducer(requestBrowse);
Message request = session.createMessage();
request.setStringProperty(ScheduledMessage.AMQ_SCHEDULER_ACTION,
ScheduledMessage.AMQ_SCHEDULER_ACTION_BROWSE);
request.setJMSReplyTo(browseDest);
producer.send(request);
Message scheduled = browser.receive(5000);
while (scheduled != null) {
// Do something clever...
}
其他详细信息记录在 this blog post 中。