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

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

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

    https://github.com/apache/activemq-artemis/pull/2154#discussion_r197166964
  
    --- Diff: 
examples/protocols/amqp/dotnet/HighPerformanceLoad/ReceiverPool.cs ---
    @@ -0,0 +1,109 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements. See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License. You may obtain a copy of the License at
    + *
    + * http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +using System;
    +using System.Threading;
    +using Amqp.Framing;
    +using Amqp;
    +using System.Threading.Tasks;
    +
    +namespace Artemis.Perf
    +{
    +     /**
    +     * This class will start many consumers underneath it to satisfy a 
pool of consumers
    +     * While calling a single callback for when messages are received.
    +     */
    +     public class ReceiverPool
    +     {
    +        public delegate void MessageReceived(int id, Session session, 
ReceiverLink link, Message msg);
    +
    +        public int MessagesReceived;
    +
    +        MessageReceived _callback;
    +        int _Workers;
    +        private Object receiverLock = new Object();
    +        private Boolean running = true;
    +        
    +        private ReceiverLink[] Receivers;
    +        private Session[] Sessions;
    +
    +        private Connection _Connection;
    +
    +        private int Credits;
    +
    +        public ReceiverPool(Connection Connection, int Workers, String 
queue, int Credits, MessageReceived callback)
    +        {
    +            this._Connection = Connection;
    +            this.Receivers = new ReceiverLink[Workers];
    +            this.Sessions = new Session[Workers];
    +            
    +
    +            for (int i = 0; i < Workers; i++)
    +            {
    +
    +                // I was playing with using a single session versus 
multiple sessions
    +                if (i == 0) {
    +                    Sessions[i] = new Session(Connection);
    +                }
    +                else {
    +                    Sessions[i] = Sessions[0];
    +                }
    +                Receivers[i] = new ReceiverLink(Sessions[i], "receiver " + 
queue + " " + i, queue);
    +            }
    +            this._Workers = Workers;
    +            this._callback = callback;
    +            this.Credits = Credits;
    +        }
    +
    +
    +        public void stop() {
    +            running = false;
    +            for (int i = 0; i < _Workers; i++) {
    +                Receivers[i].Close();
    +                Sessions[i].Close();
    +            }
    +        }
    +
    +
    +        public void start() {
    +            for (int i = 0; i < _Workers; i++) {
    +                {
    +                    int value = 0;
    --- End diff --
    
    I haven't tried this, but if this value is always 0 doesn't that mean the 
pool only uses 1 of its consumers?


> AMQPLite example with a High Performant Producer and Consumer
> -------------------------------------------------------------
>
>                 Key: ARTEMIS-1948
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1948
>             Project: ActiveMQ Artemis
>          Issue Type: Task
>            Reporter: clebert suconic
>            Priority: Major
>             Fix For: 2.7.0
>
>




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

Reply via email to