Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-74

producers not flow controlled over AMQP(?)

    XMLWordPrintable

Details

    • Documentation (Ref Guide, User Guide, etc.)
    • Hide

      Started router with:

      container {
          workerThreads: 4
          containerName: Qpid.Dispatch.Router.A
      }
      
      router {
          mode: interior
          routerId: Router.A
      }
      
      listener {
          addr: 0.0.0.0
          port: 5674
          authenticatePeer: no
      }
      
      listener {
          addr: 0.0.0.0
          port: 55672
          role: inter-router
          authenticatePeer: no
      }
      address {
          prefix: queue
          distribution: balanced
      }
      
      connector {
          name: broker
          addr: 0.0.0.0
          port: 5672
          role: route-container
      }
      
      autoLink {
          addr: queue
          dir: out
          connection: broker
      }
      
      autoLink {
          addr: queue
          dir: in
          connection: broker
      }
      
      

      Started artemis on 5672 with mods to broker.xml as above. Then ran:

      qpid-receive --address queue --ack-frequency 1 --messages 1000000 --report-total -f --print-content false --report-every 100000 --broker localhost:5674

      and

      qpid-send --address queue --messages 1000000 --report-total --content-size 64 --report-every 100000 --broker localhost:5674

      (qpid-send and qpid-receive are available through yum for fedora, e.g. yum install qpid-cpp-client-devel)

      Show
      Started router with: container { workerThreads: 4 containerName: Qpid.Dispatch.Router.A } router { mode: interior routerId: Router.A } listener { addr: 0.0.0.0 port: 5674 authenticatePeer: no } listener { addr: 0.0.0.0 port: 55672 role: inter-router authenticatePeer: no } address { prefix: queue distribution: balanced } connector { name: broker addr: 0.0.0.0 port: 5672 role: route-container } autoLink { addr: queue dir: out connection: broker } autoLink { addr: queue dir: in connection: broker } Started artemis on 5672 with mods to broker.xml as above. Then ran: qpid-receive --address queue --ack-frequency 1 --messages 1000000 --report-total -f --print-content false --report-every 100000 --broker localhost:5674 and qpid-send --address queue --messages 1000000 --report-total --content-size 64 --report-every 100000 --broker localhost:5674 (qpid-send and qpid-receive are available through yum for fedora, e.g. yum install qpid-cpp-client-devel)
    • AMQ 7.0.2 sprint 1

    Description

      I have a qpid dispatch router connected to an artemis broker. The broker has a queue defined on it and the router is configured to forward incoming messages through this and to pull messages out of the queue when needed for receivers. I have a sender and receiver connected to the router and am sending messsages as fast as possible.

      My broker config includes:

            <address-settings>
               <!--default for catch all-->
               <address-setting match="#">
                  <dead-letter-address>jms.queue.DLQ</dead-letter-address>
                  <expiry-address>jms.queue.ExpiryQueue</expiry-address>
                  <redelivery-delay>0</redelivery-delay>
                  <max-size-bytes>10485760</max-size-bytes>
                  <message-counter-history-day-limit>10</message-counter-history-day-limit>
                  <address-full-policy>BLOCK</address-full-policy>
               </address-setting>
            </address-settings>
            <queues>
                <queue name="examples">
                   <address>examples</address>
                </queue>
                <queue name="queue">
                   <address>queue</address>
                </queue>
            </queues>
         </core>
      

      Running with the default profile, -Xms512M -Xmx1024M, I get an OutOfMemoryError (with an odd stack trace to my eye):

      Exception in thread "Thread-27 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$2@140e5a13-1032000752)" java.lang.OutOfMemoryError: GC overhead limit exceeded
      	at java.util.Arrays.copyOfRange(Arrays.java:3664)
      	at java.lang.String.<init>(String.java:207)
      	at java.lang.StringBuilder.toString(StringBuilder.java:407)
      	at java.net.URLStreamHandler.parseURL(URLStreamHandler.java:249)
      	at sun.net.www.protocol.file.Handler.parseURL(Handler.java:67)
      	at java.net.URL.<init>(URL.java:622)
      
      Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Thread-27 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$2@140e5a13-1032000752)"
      

      My expectation was that the size limit and full-policy in the address-settings would apply to 'queue' and so the sender (which would be the router) would be flow controlled. This seems not to be the case.

      Attachments

        Issue Links

          Activity

            People

              mtaylor1@redhat.com Martyn Taylor (Inactive)
              gordonsim Gordon Sim
              Matej Lesko Matej Lesko (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: