【问题标题】:I send a scheduled message to activemq broker but two message shown in web console我向 activemq 代理发送了一条预定消息,但 Web 控制台中显示了两条消息
【发布时间】:2013-02-02 18:46:06
【问题描述】:

我写了一个简单的ActiveMQ 客户端程序来产生如下消息:

public static void main(String[] args) throws Throwable
{
    final ActiveMQConnectionFactory conFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
    final QueueConnection connection = conFactory.createQueueConnection();
    final Session session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    final Destination destination = new ActiveMQQueue("MJ_SAF");
    final MessageProducer producer = session.createProducer(destination);

    Message message = session.createTextMessage("test");
    message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 20);
    message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 1);
    message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1);
    producer.send(message);
}

当这个程序执行时,我希望有一条消息存储在 ActiveMQ 的预定部分,并在 20 秒后发送 MJ_SAF 队列,但是当我连接到网络控制台时看到以下结果:

MJ_SAF 存储了两条消息,这是不正确的,但是当我正常发送消息(没有安排)时,我会在 Web 控制台中看到一条消息。

public static void main(String[] args) throws Throwable
{
    final ActiveMQConnectionFactory conFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
    final QueueConnection connection = conFactory.createQueueConnection();
    final Session session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    final Destination destination = new ActiveMQQueue("MJ_SAF");
    final MessageProducer producer = session.createProducer(destination);

    Message message = session.createTextMessage("test");
    producer.send(message);
}

通过上面的代码,一切都很好:

我不明白这种行为。有谁知道这其中的原因吗?

【问题讨论】:

    标签: java jms activemq message-queue


    【解决方案1】:

    您将属性 ScheduledMessage.AMQ_SCHEDULED_REPEAT 设置为 1,因此它将重复 1 次,总共给您 2 条消息。

    有关属性的描述,请参阅here。据我了解,您当前的设置将等待 20 毫秒,发布 1 条消息,等待 1 毫秒,然后发布第二条消息,然后结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 2023-02-17
      • 2014-03-19
      • 2018-04-02
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      相关资源
      最近更新 更多