[
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)