You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by bzaks1424 <bz...@gmail.com> on 2010/02/26 01:01:08 UTC

Connection Fails when trying to send Blob Message

I am trying to send a BlobMessage to a "remote" queue (in this case just to
the "localhost" queue) in ActiveMQ. Whenever I issue the send command from
the producer - the connection is refused. I'll try to provide as much
information as I can.

I'm also *really* new to ActiveMQ. So If you have any suggestions in my
coding practices I'm all ears! (Or I suppose 'eyes' would have to do in this
case)

Tests Performed:
I can enqueue other objects (TextMessage, ObjectMessage....)
I can telnet to the port from my command line (telnet localhost 61616)

Environment:
Windows XP (SP3)
No Firewall
Java 1.6

Code:
try {
	StringBuffer brokerURL = new StringBuffer("tcp://")
			.append("exampleHost");
	if (destinationPort == null) {
		// Use the default
		brokerURL.append(":").append("61616");
	} else {
		brokerURL.append(":").append(destinationPort);
	}

	ActiveMQConnectionFactory factoryBean = null;
	Connection connection = null;
	ActiveMQSession session = null;
	MessageProducer producer = null;
	try {
		factoryBean = new ActiveMQConnectionFactory(brokerURL
				.toString());
		connection = factoryBean.createConnection();
		connection.start();
		session = (ActiveMQSession) connection.createSession(false,
				Session.AUTO_ACKNOWLEDGE);
		Destination payloadQueue = session
				.createQueue("com.example.payload");
		producer = session.createProducer(null);
		BlobMessage blobMessage = session
				.createBlobMessage(remoteWorkItemTO.getPayload());
		blobMessage.setStringProperty("FILENAME",fileName);
		blobMessage.setLongProperty("JOB_ID",jobId);
		producer.send(payloadQueue, blobMessage);
		
	} finally {
		try {
			producer.close();
			session.close();
			connection.stop();
			connection.close();
		} catch (Exception e) {
			// Ignore it.
		}
	}
} catch (Exception e) {
	e.printStackTrace();
}

Abridged Stack Trace:
javax.jms.JMSException: Connection refused: connect
	at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
	at
org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:176)
	at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1674)
	at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:231)
	at
org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:300)
..........
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:525)
	at java.net.Socket.connect(Socket.java:475)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
	at sun.net.www.http.HttpClient.New(HttpClient.java:306)
	at sun.net.www.http.HttpClient.New(HttpClient.java:323)
	at
sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
	at
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
	at
sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
	at
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
	at
org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadStream(DefaultBlobUploadStrategy.java:59)
	at
org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadFile(DefaultBlobUploadStrategy.java:44)
	at org.apache.activemq.blob.BlobUploader.upload(BlobUploader.java:51)
	at
org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:173)
	... 37 more
-- 
View this message in context: http://old.nabble.com/Connection-Fails-when-trying-to-send-Blob-Message-tp27714556p27714556.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: Connection Fails when trying to send Blob Message

Posted by Dejan Bosanac <de...@nighttale.net>.
Hi,

the blob messages require another server (http or ftp), as messages are
uploaded/downloaded from that server and only reference is sent to the
broker.

So you need to have either separate http or ftp server up and running, check
out some of the unit tests for more info on the topic

http://fisheye6.atlassian.com/browse/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/blob

Cheers
--
Dejan Bosanac - http://twitter.com/dejanb

Open Source Integration - http://fusesource.com/
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net


On Fri, Feb 26, 2010 at 1:01 AM, bzaks1424 <bz...@gmail.com> wrote:

>
> I am trying to send a BlobMessage to a "remote" queue (in this case just to
> the "localhost" queue) in ActiveMQ. Whenever I issue the send command from
> the producer - the connection is refused. I'll try to provide as much
> information as I can.
>
> I'm also *really* new to ActiveMQ. So If you have any suggestions in my
> coding practices I'm all ears! (Or I suppose 'eyes' would have to do in
> this
> case)
>
> Tests Performed:
> I can enqueue other objects (TextMessage, ObjectMessage....)
> I can telnet to the port from my command line (telnet localhost 61616)
>
> Environment:
> Windows XP (SP3)
> No Firewall
> Java 1.6
>
> Code:
> try {
>        StringBuffer brokerURL = new StringBuffer("tcp://")
>                        .append("exampleHost");
>        if (destinationPort == null) {
>                // Use the default
>                brokerURL.append(":").append("61616");
>        } else {
>                brokerURL.append(":").append(destinationPort);
>        }
>
>        ActiveMQConnectionFactory factoryBean = null;
>        Connection connection = null;
>        ActiveMQSession session = null;
>        MessageProducer producer = null;
>        try {
>                factoryBean = new ActiveMQConnectionFactory(brokerURL
>                                .toString());
>                connection = factoryBean.createConnection();
>                connection.start();
>                session = (ActiveMQSession) connection.createSession(false,
>                                Session.AUTO_ACKNOWLEDGE);
>                Destination payloadQueue = session
>                                .createQueue("com.example.payload");
>                producer = session.createProducer(null);
>                BlobMessage blobMessage = session
>
>  .createBlobMessage(remoteWorkItemTO.getPayload());
>                blobMessage.setStringProperty("FILENAME",fileName);
>                blobMessage.setLongProperty("JOB_ID",jobId);
>                producer.send(payloadQueue, blobMessage);
>
>        } finally {
>                try {
>                        producer.close();
>                        session.close();
>                        connection.stop();
>                        connection.close();
>                } catch (Exception e) {
>                        // Ignore it.
>                }
>        }
> } catch (Exception e) {
>        e.printStackTrace();
> }
>
> Abridged Stack Trace:
> javax.jms.JMSException: Connection refused: connect
>        at
>
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
>        at
>
> org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:176)
>        at
> org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1674)
>        at
>
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:231)
>        at
>
> org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:300)
> ..........
> Caused by: java.net.ConnectException: Connection refused: connect
>        at java.net.PlainSocketImpl.socketConnect(Native Method)
>        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
>        at
> java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
>        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
>        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
>        at java.net.Socket.connect(Socket.java:525)
>        at java.net.Socket.connect(Socket.java:475)
>        at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
>        at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
>        at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
>        at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
>        at sun.net.www.http.HttpClient.New(HttpClient.java:306)
>        at sun.net.www.http.HttpClient.New(HttpClient.java:323)
>        at
>
> sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
>        at
>
> sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
>        at
>
> sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
>        at
>
> sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
>        at
>
> org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadStream(DefaultBlobUploadStrategy.java:59)
>        at
>
> org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadFile(DefaultBlobUploadStrategy.java:44)
>        at
> org.apache.activemq.blob.BlobUploader.upload(BlobUploader.java:51)
>        at
>
> org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:173)
>        ... 37 more
> --
> View this message in context:
> http://old.nabble.com/Connection-Fails-when-trying-to-send-Blob-Message-tp27714556p27714556.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>