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