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

producers not flow controlled over AMQP(?)

XMLWordPrintable

    • 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

      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.

              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

                Created:
                Updated:
                Resolved: