这是我的代码
private Connection _connection;
private ISession _session;
private const String QUEUE_DESTINATION = "DotNet.ActiveMQ.Test.Topic";
ConnectionFactory factory;
Transpo
public void TestInitialize()
{
factory = new ConnectionFactory("tcp://localhost:61616");
_connection = factory.CreateConnection("system", "manager") as Connection;
bool x=_connection.TransportFailed;
_connection.ClientId = "LFV";//Exception when connection not estab
_connection.Start();//Exception when connection not estab
_session = _connection.CreateSession();
}
我在_connection.ClientId和_connection.Start上遇到异常。有没有什么办法可以通过在调用start方法和分配客户端ID之前查找连接是否已建立来避免此异常。
答案 0 :(得分:1)
如果您没有设置唯一的客户端ID,则会出现异常,因为对于任何给定的客户端ID,只有一个客户端可以连接到代理。如果您修复代码使得每个客户端应用程序都拥有自己唯一的客户端ID,那么问题应该自行解决。您当然也可以在Connection上设置异常监听器以获得错误通知。
无法测试连接,因为它正在等待您设置ClientId或启动连接以便充当JMS客户端。实际的连接握手直到启动调用或任何需要完全建立连接的调用(例如createSession等)才会发生。您应该编写应用程序代码以响应连接启动时的失败。
哦和FYI,在调用start之后设置客户端ID将不起作用,因为它只在Connection开始之前被允许。