C# ActiveMQ-每个会话有多个连接?

C# ActiveMQ-每个会话有多个连接?,c#,activemq,C#,Activemq,在ActiveMQ中,我被告知提高吞吐量的最佳解决方案是拥有多个连接,每个连接都有自己的会话和使用者 我一直在尝试使用NMS(通过C#连接)实现这一点,但在MQ web控制台的“Active Consumwers”屏幕中,我看到了我希望看到的所有连接和消费者,但在下一个专栏中,它们的会话ID都是“1”。我希望每个会话都有一个单独的会话ID 是这样吗?如果每个连接/使用者应有不同的会话ID,我将如何确保创建这些额外会话 下面是我用来启动新连接的一些示例代码(基于): 。。。每次我打开的每个连接都会

在ActiveMQ中,我被告知提高吞吐量的最佳解决方案是拥有多个连接,每个连接都有自己的会话和使用者

我一直在尝试使用NMS(通过C#连接)实现这一点,但在MQ web控制台的“Active Consumwers”屏幕中,我看到了我希望看到的所有连接和消费者,但在下一个专栏中,它们的会话ID都是“1”。我希望每个会话都有一个单独的会话ID

是这样吗?如果每个连接/使用者应有不同的会话ID,我将如何确保创建这些额外会话

下面是我用来启动新连接的一些示例代码(基于):


。。。每次我打开的每个连接都会执行此操作。

看起来这段代码是我问题的根源:

public SimpleQueueListener CreateSimpleQueueListener(IMessageProcessor processor)
{
    IMessageConsumer consumer = this.session.CreateConsumer(this.queue, "2 > 1");
    return new SimpleQueueListener(consumer, processor, this.session);
}
因为它对所有使用者使用公共会话(this.session)。通过每次创建一个新会话(并将其保存在集合中或通过其他方式),我实现了在同一连接中操作每个侦听器自己会话的目标。例如:

public SimpleQueueListener CreateSimpleQueueListener(IMessageProcessor processor)
{
    var listenerSession = this.connection.CreateSession();
    IMessageConsumer consumer = listenerSession.CreateConsumer(this.queue, "2 > 1");
    return new SimpleQueueListener(consumer, processor, listenerSession);
}

您正在使用哪个版本的ActiveMQ和NMS?还有一个问题:您在创建IConnectionFactory时是否意外设置了Clientid?我快速浏览了一下源代码,注意到它被下推到了连接id,可能还有会话:s
public SimpleQueueListener CreateSimpleQueueListener(IMessageProcessor processor)
{
    var listenerSession = this.connection.CreateSession();
    IMessageConsumer consumer = listenerSession.CreateConsumer(this.queue, "2 > 1");
    return new SimpleQueueListener(consumer, processor, listenerSession);
}