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

SUBASISH MOHAPATRA commented on AMQNET-773:
-------------------------------------------

var queueClientLogger = loggerFactory.CreateLogger<QueueClient>();
var queueClient1 = new QueueClient(queueClientLogger, "Q/test1");
await queueClient1.InitializeAsync();

var queueClient2 = new QueueClient(queueClientLogger, "Q/test1");
await queueClient2.InitializeAsync();

var queueClient3 = new QueueClient(queueClientLogger, "Q/test2");
await queueClient3.InitializeAsync();

-----------------------------------------------
internal class QueueClient : IDisposable
{
  private readonly ILogger<QueueClient> logger;
  private IMessageConsumer consumer;
  private bool disposedValue;

  #region constructor

  public QueueClient(ILogger<QueueClient> logger, string queueName)
  {
      this.logger = logger;
      QueueName = queueName;
      ConsumerName = $"\{QueueName}-\{Guid.NewGuid()}";
  }

  #endregion

  #region Properties

  internal string? QueueName \{ get; private set; }
  internal string ConsumerName \{ get; private set; }
  internal Apache.NMS.ISession Session \{ get; private set; }
  internal Apache.NMS.IConnection Connection \{ get; private set; }


  #endregion

  #region Methods

  internal async Task InitializeAsync()
  {
      string brokerUri = $"amqp://localhost:5672";  // Default port
      NMSConnectionFactory factory = new NMSConnectionFactory(brokerUri);
      Connection = await factory.CreateConnectionAsync();
      await Connection.StartAsync();
      Session = await 
Connection.CreateSessionAsync(AcknowledgementMode.AutoAcknowledge);
      Apache.NMS.IDestination dest = await Session.GetQueueAsync(QueueName);
      consumer = await Session.CreateConsumerAsync(dest);
      consumer.Listener += Consumer_Listener;
  }

  private void Consumer_Listener(Apache.NMS.IMessage message)
  {
      logger.LogInformation($"\{ConsumerName}: Message from queue - 
\{QueueName}");            
      Thread.Sleep(1000);
      string content = string.Empty;
      if (message is ITextMessage)
      {
          ITextMessage? txtMsg = message as ITextMessage;
          content = txtMsg?.Text ?? "";
      }
      else if (message is IBytesMessage)
      {
          IBytesMessage? bytesMsg = message as IBytesMessage;
          if (bytesMsg == null)
          {
              content = $"NULL message received";
          }
          else
          {
              content = Encoding.UTF8.GetString(bytesMsg.Content);
          }
      }
      else
      {
          content = "Unexpected message type: " + message.GetType().Name;
      }
      logger.LogInformation($"\{content}");
  }
  
  //Ignore IDosposable code
}

> Unable to use multiple consumers created for single queue using different 
> sessions
> ----------------------------------------------------------------------------------
>
>                 Key: AMQNET-773
>                 URL: https://issues.apache.org/jira/browse/AMQNET-773
>             Project: ActiveMQ .Net
>          Issue Type: Test
>            Reporter: SUBASISH MOHAPATRA
>            Priority: Major
>
> I am unable to use multiple consumers created for same queue but different 
> sessions. Its always using one consumer.
> I am using Apache.NMS.AMQP 2.0 for our .Net application (C# language)
> Few questions:
>  # Is different session needed to create multiple listeners/consumers for 
> same queue?
>  # Is different connection recommended for consuming messages from individual 
> queue?
>  # What is the best technique to have multiple listeners for multiple queues?
>  



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to