【问题标题】:Active MQ Scheduled Job IdActivemq 计划任务 ID
【发布时间】:2021-12-18 06:24:13
【问题描述】:

我将 ActiveMQ 与 Java Spring 结合使用。我启用了调度程序,并且设法(以编程方式)创建了预定的作业。我还设法编写了一种基于作业 ID 删除它们的方法。我一直在使用 JmsTemplate 浏览队列,但它仅在队列有一些消息等待时才有效。队列为空时找不到作业 ID。

我的问题是我应该如何获得预定的作业 ID?

【问题讨论】:

    标签: activemq scheduler


    【解决方案1】:

    从您的问题来看,您似乎想查看计划了哪些消息,因此您需要创建一个在名为“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

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2023-03-15
      • 2011-05-22
      • 2011-01-22
      • 2019-06-06
      • 2021-11-06
      • 2011-12-08
      • 2011-01-02
      • 1970-01-01
      相关资源
      最近更新 更多