[ 
https://issues.apache.org/jira/browse/ARTEMIS-2205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16724680#comment-16724680
 ] 

ASF GitHub Bot commented on ARTEMIS-2205:
-----------------------------------------

Github user michaelandrepearce commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/2467#discussion_r242787783
  
    --- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
 ---
    @@ -122,7 +136,53 @@ public Object getBrokerConsumer() {
     
        @Override
        public void onFlow(int currentCredits, boolean drain) {
    -      sessionSPI.onFlowConsumer(brokerConsumer, currentCredits, drain);
    +      connection.requireInHandler();
    +
    +      setupCredit();
    +
    +      ServerConsumerImpl serverConsumer = (ServerConsumerImpl) 
brokerConsumer;
    +      if (drain) {
    +         // If the draining is already running, then don't do anything
    +         if (draining.compareAndSet(false, true)) {
    +            final ProtonServerSenderContext plugSender = 
(ProtonServerSenderContext) serverConsumer.getProtocolContext();
    +            serverConsumer.forceDelivery(1, new Runnable() {
    +               @Override
    +               public void run() {
    +                  try {
    +                     connection.runNow(() -> {
    +                        plugSender.reportDrained();
    +                        setupCredit();
    +                     });
    +                  } finally {
    +                     draining.set(false);
    +                  }
    +               }
    +            });
    +         }
    +      } else {
    +         serverConsumer.receiveCredits(-1);
    +      }
    +   }
    +
    +   public boolean hasCredits() {
    +      if (!connection.flowControl(onflowControlReady)) {
    +         return false;
    +      }
    +
    +      //return true;
    +      //return getSender().getCredit() > 0;
    --- End diff --
    
    Remove commented out code


> Make AMQP Processing Single Threaded and other AMQP perf improvements
> ---------------------------------------------------------------------
>
>                 Key: ARTEMIS-2205
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2205
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: AMQP
>    Affects Versions: 2.6.3
>            Reporter: clebert suconic
>            Assignee: clebert suconic
>            Priority: Major
>             Fix For: 2.7.0
>
>
> This is using Netty Executor (NIOLoop) to process AMQP.
> Instead of using a lock to enter the AMQP processing, what has issues on 
> scaling up multiple connections per queue, it's using a single threaded 
> executor.
>  
>  
> This represents a major improvement in AMQP. I will take my time to write a 
> blog post about this with multiple scenarios comparing 2.6.3, master (before 
> this change) and after. (I will post a link here to this JIRA).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to