[
https://issues.apache.org/activemq/browse/AMQNET-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52129#action_52129
]
Jim Gomes commented on AMQNET-160:
----------------------------------
I'm OK with the backed out changes. If Michel is OK with this solution, then
let's close this issue. I can see arguments for handling the initial start-up
and connection with different client logic than handling a run-time disconnect.
My own application has a design requirement that it not proceed with start-up
if it is not connected to the messaging broker. This is a different scenario
than a run-time disconnect that happens to a long-running client connection.
When I issue the Connect() command, and I don't get an exception of some kind,
the assumption is that I am actively connected to a broker. However, with the
current solution, this is a bad assumption, but it is only bad if I happen to
be using the failover protocol. Using all other protocols, this is a correct
assumption. The problem here is that my client application does not, and
should not, know what protocol is being used, or even what broker I am
connecting to (ActiveMQ, vs. TIBCO). This is an externally configured setting.
I will need to study this further to determine how much of an issue this might
be for us.
Regarding Tim's comment above about the DNS resolution issues, I agree with
this scenario, which is why I disabled the IPHost caching code. Previously,
the IPHost entries were cached at first look-up for speed considerations. I
realized that with the failover protocol implemented, this could lead to never
recognizing that a host has come back online, perhaps with a new dynamic IP
address assigned to it. The code is still there, but just disabled. I think
that code should be looked at further, and perhaps only enabled if failover is
not being used.
> Connecting to non-existing host does not raise Exception when using failover
> protocol
> -------------------------------------------------------------------------------------
>
> Key: AMQNET-160
> URL: https://issues.apache.org/activemq/browse/AMQNET-160
> Project: ActiveMQ .Net
> Issue Type: Bug
> Components: ActiveMQ Client
> Affects Versions: 1.0
> Environment: Windows XP/Windows 2003 , .NET Framework 2.0 (Broker
> running Ubuntu 8.04 + ActiveMQ 5.2)
> Reporter: Michel Van Hoof
> Assignee: Jim Gomes
> Fix For: 1.1
>
>
> When using the failover protocol, there is no exception raised when trying to
> connect to non-existing host.
> Example:
> using System;
> using System.Collections.Generic;
> using System.Text;
> using Apache.NMS;
> using Apache.NMS.ActiveMQ;
> class ExceptionTest
> {
> private readonly IConnectionFactory oConnfact;
> private readonly IConnection oConn;
> private readonly ISession oSess;
> private readonly IMessageConsumer oConsumer;
> private string sConnectionUri = "failover:(tcp://unknownhost:61612)";
> // Using this connectionstring it does fail.
> //private string sConnectionUri = "tcp://unknownhost:61612";
> public ExceptionTest()
> {
> oConn.ExceptionListener += new ExceptionListener(OnException);
> this.oConnfact = new ConnectionFactory(sConnectionUri,
> "CLIENT.ID");
>
> oConn.ExceptionListener += new ExceptionListener(OnException);
> this.oConn = oConnfact.CreateConnection();
> oConn.RequestTimeout(new TimeSpan(0, 0, 2));
> // Code hangs here
> oConn.Start();
> //Rest does not really mather anymore since it hangs
>
> }
> void OnEx(Exception exception)
> {
> throw new Exception("The method or operation is not
> implemented.");
> }
> public void OnException(Exception ex)
> {
> Console.WriteLine("You made a BooBoo: {0} ", ex.ToString());
> }
> }
> If you change the connectionstring to "tcp://badhostname:xxxx" , the
> exception does occur.
> It also seems to ignore the RequestTimeout.
> This blocks the application thread indefinately since there is no way to
> recover from it (no exception thrown).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.