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

C# 是否可以在c中的活动mq中找到连接是否已建立#,c#,jms,activemq,C#,Jms,Activemq,这是我的密码 private Connection _connection; private ISession _session; private const String QUEUE_DESTINATION = "DotNet.ActiveMQ.Test.Topic"; ConnectionFactory factory; Transpo public void TestInitialize() {

这是我的密码

    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之前,是否有任何方法可以通过查找连接是否已建立来避免此异常。

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

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


哦,仅供参考,在调用start之后设置客户端ID将无效,因为它只允许在连接开始之前设置。

您会遇到什么异常?您的客户端id必须是唯一的(您得到的异常可能与此相关)。我使用的是唯一的客户端id。如果有人试图使用无效的用户名/密码连接,或者说活动mq服务已关闭,在分配客户端id之前,我想知道连接没有建立。我上次使用AMQ已经有一段时间了,所以我不确定它是否能工作,但您可以尝试在_connection.Start()之后设置clientId;呼叫默认情况下,如果在连接之前没有提供,AMQ将提供一个唯一的客户端id。开始,我不确定在连接启动后您是否可以更改它。