0
在ActiveMQ中,我被告知,增加吞吐量的最佳解决方案是拥有多个连接,每个连接都有自己的会话和消费者。ActiveMQ - 每个会话有多个连接?
我一直试图通过NMS(通过C#连接)实现这一目标,但在MQ Web控制台的“Active Consumwers”屏幕中,我看到我所有的连接&消费者列为我所期望的看到他们,但在下一列中,他们都有一个“1”的sessionId。我本来希望每个人都有一个单独的会话ID。
这是正确的吗?如果每个连接/消费者应该有不同的会话ID,我将如何去确保创建这些额外的会话?
这里是我用来启动一个新的连接(这是基于Remarks ActiveMQ transactional messaging introduction code)一些示例代码:
public QueueConnection(IConnectionFactory connectionFactory, string queueName, AcknowledgementMode acknowledgementMode)
{
this.connection = connectionFactory.CreateConnection();
this.connection.Start();
this.session = this.connection.CreateSession(acknowledgementMode);
this.queue = new ActiveMQQueue(queueName);
}
...这正在每次所做每个我的连接开幕。由于它使用一个共同的会话(this.session)的所有消费者
public SimpleQueueListener CreateSimpleQueueListener(IMessageProcessor processor)
{
IMessageConsumer consumer = this.session.CreateConsumer(this.queue, "2 > 1");
return new SimpleQueueListener(consumer, processor, this.session);
}
:
您使用的是什么版本的ActiveMQ和NMS? – Noctris 2010-09-16 13:37:15
另一个问题:你在创建IConnectionFactory时是否意外设置了Clientid?我快速浏览了源代码并注意到这会被推送到连接ID以及可能的会话中:s – Noctris 2010-09-16 13:41:38