2013-02-18 1 views
0

Я написал простую программу ActiveMQ клиента для получения сообщения следующим образом:я отправить запланированное сообщение для 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 очереди, но при подключении к веб-приставка увидел следующий результат:

enter image description here

хранится два сообщения на MJ_SAF и это неправильно, но когда я обычно отправляю сообщение (без планирования), я вижу сообщение в веб-консоли.

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); 
} 

на коде выше все хорошо:

enter image description here

Я не понимаю такого поведения. Кто-нибудь знает причины этого?

ответ

4

У вас есть свойство ScheduledMessage.AMQ_SCHEDULED_REPEAT установлено в 1, поэтому оно будет повторяться 1 раз, что даст вам всего 2 сообщения.

См. here для описания недвижимости. Насколько я понимаю, ваша текущая настройка будет ждать 20 миллисекунд, опубликует 1 сообщение, подождать 1 миллисекунду и опубликует второе сообщение, а затем закончит.

+0

О, да, вы правы, спасибо. – MJM

Смежные вопросы