1

使用 ac# 客户端正在使用持久订阅者订阅 Tibco 主题。我正在使用下面的代码

TopicConnectionFactory factory = new TIBCO.EMS.TopicConnectionFactory(serverUrl);
TopicConnection connection = factory.CreateTopicConnection(userName, password);
connection.ClientID = clientID;
TopicSession session = connection.CreateTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.CreateTopic(topicName);
TopicSubscriber subscriber = session.CreateDurableSubscriber(topic, durableName); 
connection.Start();

当程序第一次运行时,上面的代码工作正常并且能够接收到消息。但是当我停止我的客户端程序并尝试再次运行它时,从现在开始,我根本无法连接到主题。它给了我一个错误

ClientId already exists at line
connection.ClientID = clientID;

我不确定clientId的作用是什么。每次连接到 TOPIC 时是否需要提供唯一的客户端 ID?

请帮助。

提前致谢。

4

2 回答 2

0

一般来说,每个连接都应该有一个唯一的 clientId。否则,如果已经存在具有相同 clientId 的连接,您将获得“ClientId 已存在”。

于 2014-03-22T23:08:34.993 回答
0

我终于找到了解决方案。而不是 Receive 方法,我使用了 ReceiveNoWait 方法,然后一切正常。

于 2014-03-25T19:28:55.127 回答