<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
</head>
<body>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I am experiencing a problem that I have been unable to pin down. When I attempt to use a java class to listen for messages bound to a particular exchange by a particular routing
 key, I get a &quot;Connection timed out&quot; error. Here is my code:<br>
<br>
<br>
public class ReceiveLogsDirect {<br>
<br>
&nbsp; private static final String EXCHANGE_NAME = &quot;ABC_SERVER&quot;;<br>
&nbsp; <br>
&nbsp; public static void main(String[] argv) throws Exception {<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp; String hostName = &quot;localhost&quot;;<br>
&nbsp;&nbsp;&nbsp; &nbsp; int portNumber = 5672;<br>
&nbsp;&nbsp;&nbsp; &nbsp; <br>
&nbsp;&nbsp;&nbsp; &nbsp; if (argv.length &lt; 1 || argv.length == 2 || argv.length &gt; 3){<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; System.err.println(&quot;Usage: ReceiveLogsDirect [session ID] [RabbitMQ server IP, optional] [RabbitMQ server port #, optional]&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; System.exit(1);<br>
&nbsp;&nbsp;&nbsp; &nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp; else if (argv.length == 1) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; hostName = &quot;localhost&quot;;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; portNumber = 5672; // default port that rabbitMQ listens to<br>
&nbsp;&nbsp;&nbsp; &nbsp; }<br>
&nbsp;&nbsp;&nbsp; &nbsp; else if&nbsp; (argv.length == 3) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; hostName = argv[1];<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; portNumber = Integer.parseInt(argv[2]);<br>
&nbsp;&nbsp;&nbsp; &nbsp; }&nbsp;&nbsp;&nbsp; &nbsp; <br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp; &nbsp; ConnectionFactory factory = new ConnectionFactory();<br>
&nbsp;&nbsp;&nbsp; &nbsp; <br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp; factory.setHost(hostName);<br>
&nbsp;&nbsp;&nbsp; &nbsp; factory.setPort(portNumber);<br>
&nbsp;&nbsp;&nbsp; &nbsp; factory.setUsername(&quot;guest&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp; factory.setPassword(&quot;guest&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp; factory.setVirtualHost(&quot;/&quot;);<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp; System.out.println(&quot; [*] HERE 1&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp; Connection connection = factory.newConnection();<br>
&nbsp;&nbsp;&nbsp; &nbsp; System.out.println(&quot; [*] HERE 2&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp; Channel channel = connection.createChannel();&nbsp;&nbsp;&nbsp; &nbsp;<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; channel.exchangeDeclare(EXCHANGE_NAME, &quot;direct&quot;);<br>
&nbsp;&nbsp;&nbsp; String queueName = channel.queueDeclare().getQueue();<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; channel.queueBind(queueName, EXCHANGE_NAME, argv[0]);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(&quot; [*] bindingKey &quot; &#43; argv[0]&nbsp; &#43;&nbsp; &quot; is bound to queue on exchange &quot; &#43; EXCHANGE_NAME );<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; System.out.println(&quot; [*] Waiting for messages. To exit press CTRL&#43;C&quot;);<br>
<br>
&nbsp;&nbsp;&nbsp; QueueingConsumer consumer = new QueueingConsumer(channel);<br>
&nbsp;&nbsp;&nbsp; channel.basicConsume(queueName, true, consumer);<br>
<br>
&nbsp;&nbsp;&nbsp; while (true) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QueueingConsumer.Delivery delivery = consumer.nextDelivery();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String message = new String(delivery.getBody());<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String routingKey = delivery.getEnvelope().getRoutingKey();<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot; [x] Received message for &quot; &#43; routingKey &#43; &quot; &gt;&gt;&gt;&quot; &#43; message);<br>
&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>
&nbsp; }<br>
<br>
I used simple print statements to pinpoint the source of the problem at the line where I call newConnection().<br>
<br>
&nbsp; &nbsp;&nbsp; The error I get is this: <br>
<br>
&nbsp;[*] HERE 1<br>
Exception in thread &quot;main&quot; java.net.ConnectException: Connection timed out: connect<br>
&nbsp;&nbsp;&nbsp; at java.net.PlainSocketImpl.socketConnect(Native Method)<br>
&nbsp;&nbsp;&nbsp; at java.net.PlainSocketImpl.doConnect(Unknown Source)<br>
&nbsp;&nbsp;&nbsp; at java.net.PlainSocketImpl.connectToAddress(Unknown Source)<br>
&nbsp;&nbsp;&nbsp; at java.net.PlainSocketImpl.connect(Unknown Source)<br>
&nbsp;&nbsp;&nbsp; at java.net.SocksSocketImpl.connect(Unknown Source)<br>
&nbsp;&nbsp;&nbsp; at java.net.Socket.connect(Unknown Source)<br>
&nbsp;&nbsp;&nbsp; at com.rabbitmq.client.ConnectionFactory.createFrameHandler(ConnectionFactory.java:441)<br>
&nbsp;&nbsp;&nbsp; at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:480)<br>
&nbsp;&nbsp;&nbsp; at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:509)<br>
&nbsp;&nbsp;&nbsp; at com.tasc.prism.queue.ReceiveLogsDirect.main(ReceiveLogsDirect.java:55)<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; My install of rabbitMQ is 2.7.0. Oddly, I have been able to execute this in another command shell window and it works. I am wondering why I'm having trouble in the second shell? Surely I must be able to execute multiple instances of ReceiveLogsDirect simultaneously,
 right?<br>
<br>
&nbsp;&nbsp;&nbsp; Could it be a runtime environment problem? I set my class path exactly the same in both shells.<br>
<br>
&nbsp;&nbsp;&nbsp; Any thoughts or similar experience with such a problem? Thank you.<br>
<br>
- Jim<br>
<br>
<br>
</div>
<p><font size="1" face="arial" color="gray">CONFIDENTIALITY NOTICE: This message and any attachments or files transmitted with it (collectively, the &quot;Message&quot;) are intended only for the addressee and may contain information that is privileged, proprietary and/or
 prohibited from disclosure by law or contract. If you are not the intended recipient: (a) please do not read, copy or retransmit the Message; (b) permanently delete and/or destroy all electronic and hard copies of the Message; (c) notify us by return email;
 and (d) you are hereby notified that any dissemination, distribution or copying of the Message is strictly prohibited.
</font></p>
</body>
</html>