繁体   English   中英

我将预定消息发送给activemq代理,但Web控制台中显示了两条消息

[英]I send a scheduled message to activemq broker but two message shown in web console

我编写了一个简单的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队列的消息,但是当我连接到Web 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);
}

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

在此处输入图片说明

我不了解这种行为。 有人知道原因吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM