【发布时间】:2013-12-11 23:10:06
【问题描述】:
我有以下代码:
_connectionFactory = new Apache.NMS.ActiveMQ.ConnectionFactory(_activeMqSettings.Connection.ServerUrl, "MyApplication");
_connection = _connectionFactory.CreateConnection(_activeMqSettings.Connection.UserName, _activeMqSettings.Connection.Password);
_connection.ConnectionInterruptedListener += _connection_ConnectionInterruptedListener;
_connection.ConnectionResumedListener += _connection_ConnectionResumedListener;
_session = _connection.CreateSession();
第一次连接成功,但后续连接抛出错误:
代理:本地主机 - 客户端:MyApplication 已从 tcp://0:0:0:0:0:0:0:1:39932
此代码在没有客户端 ID 的情况下可以正常工作,但会引发错误。我的印象是,给 ClientId 会重新连接到代理而不创建新会话(因此消费者计数保持不变),但我是否执行不正确?
当我关闭网站然后重新启动它时,我可以看到连接在_connection_ConnectionResumedListener() 触发时恢复。但是,我的听众没有收到任何新消息。
无论如何要获取会话句柄,并刷新侦听器,即重新运行:
lock (ConsumerLocker)
{
if (_consumer == null)
{
_consumer = _session.CreateConsumer(new ActiveMQTopic(_activeMqSettings.Queues.OpsConsole));
_consumer.Listener += new MessageListener(messageReader);
}
}
【问题讨论】:
标签: c# .net activemq messaging