是否可以在c#中查找是否已在活动mq中建立连接

时间:2014-04-21 10:53:06

标签: c# jms activemq

这是我的代码

    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之前查找连接是否已建立来避免此异常。

1 个答案:

答案 0 :(得分:1)

如果您没有设置唯一的客户端ID,则会出现异常,因为对于任何给定的客户端ID,只有一个客户端可以连接到代理。如果您修复代码使得每个客户端应用程序都拥有自己唯一的客户端ID,那么问题应该自行解决。您当然也可以在Connection上设置异常监听器以获得错误通知。

无法测试连接,因为它正在等待您设置ClientId或启动连接以便充当JMS客户端。实际的连接握手直到启动调用或任何需要完全建立连接的调用(例如createSession等)才会发生。您应该编写应用程序代码以响应连接启动时的失败。

哦和FYI,在调用start之后设置客户端ID将不起作用,因为它只在Connection开始之前被允许。