Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-1041

AMQP 1.0 Clients cannot read all available messages at once without relying on timeout

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • JBoss A-MQ 6.2.1
    • JBoss A-MQ 6.2
    • amqp, broker
    • Hide
      1. ./aac5_sender.py -b localhost:5672/python_queue -c 500 --log-msg dict | wc -l
        500
      2. ./aac5_receiver.py -b localhost:5672/python_queue --log-msg dict | wc -l
        151
      3. ./aac5_receiver.py -b localhost:5672/python_queue --log-msg dict | wc -l
        29
      4. ./aac5_receiver.py -b localhost:5672/python_queue --log-msg dict --timeout 1 | wc -l
        320
        1. Java JMS 1.2 AMQP 1.0
        2. NOTE: with java client there is one line of log output by default, so all results must be subtracted by 1
      1. ./aac1_sender.java.sh -a java_queue -c 500 --log-msgs dict | wc -l
        501
      2. ./aac1_receiver.java.sh -a java_queue --log-msgs dict | wc -l
        248
      3. ./aac1_receiver.java.sh -a java_queue --log-msgs dict | wc -l
        68
      4. ./aac1_receiver.java.sh -a java_queue --log-msgs dict --timeout 1 | wc -l
        139
      5. ./aac1_receiver.java.sh -a java_queue --log-msgs dict --timeout 1 | wc -l
        49
      6. echo $((247 + 67 + 138 + 48))
        500
      Show
      ./aac5_sender.py -b localhost:5672/python_queue -c 500 --log-msg dict | wc -l 500 ./aac5_receiver.py -b localhost:5672/python_queue --log-msg dict | wc -l 151 ./aac5_receiver.py -b localhost:5672/python_queue --log-msg dict | wc -l 29 ./aac5_receiver.py -b localhost:5672/python_queue --log-msg dict --timeout 1 | wc -l 320 Java JMS 1.2 AMQP 1.0 NOTE: with java client there is one line of log output by default, so all results must be subtracted by 1 ./aac1_sender.java.sh -a java_queue -c 500 --log-msgs dict | wc -l 501 ./aac1_receiver.java.sh -a java_queue --log-msgs dict | wc -l 248 ./aac1_receiver.java.sh -a java_queue --log-msgs dict | wc -l 68 ./aac1_receiver.java.sh -a java_queue --log-msgs dict --timeout 1 | wc -l 139 ./aac1_receiver.java.sh -a java_queue --log-msgs dict --timeout 1 | wc -l 49 echo $((247 + 67 + 138 + 48)) 500

      when queue on AMQ broker contains significant amount of messages (for example 500), and receiver try to read until queue is empty (msgs are available) without setting fetch timeout, it cannot read them all.

        1. amq.log
          440 kB
        2. drain_trace.log
          6 kB
        3. drain.py
          3 kB
        4. simple_recv_drain.py
          2 kB

            tbish@redhat.com Timothy Bish (Inactive)
            zkraus@redhat.com Zdenek Kraus
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: