Eugeny N Dzhurinsky schrieb:
> On Thu, Aug 07, 2008 at 01:15:51PM +0200, Marco Buss wrote:
>
>> Is the Blob successfuly uploaded? Can you see it in the jetty file system?
>>
>
> No, the blob isn't uploaded at all. Moreover, I added the code listed below:
>
> ===============================================================================
> private BlobTransferPolicy getTransferPolicy() {
> BlobTransferPolicy policy = new BlobTransferPolicy();
> policy.setUploadStrategy(new DefaultBlobUploadStrategy(policy) {
>
> @Override
> public void deleteFile(ActiveMQBlobMessage message)
> throws IOException, JMSException {
> System.err.println("Removing file");
> super.deleteFile(message);
> }
>
> @Override
> public URL uploadFile(ActiveMQBlobMessage message, File file)
> throws JMSException, IOException {
> System.err.println("Uploading file");
> return super.uploadFile(message, file);
> }
>
> @Override
> public URL uploadStream(ActiveMQBlobMessage arg0, InputStream arg1)
> throws JMSException, IOException {
> System.err.println("Uploading stream");
> return super.uploadStream(arg0, arg1);
> }
>
> });
> return policy;
> }
>
> ....
>
> public void run() {
> final ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(
> "tcp://localhost:1235");
> final BlobTransferPolicy policy = getTransferPolicy();
> factory.setBlobTransferPolicy(policy);
> try {
> final ActiveMQConnection connection = (ActiveMQConnection) factory
> .createConnection();
> System.out.println("Using upload url = "
> + policy.getDefaultUploadUrl());
> connection.setBlobTransferPolicy(policy);
> connection.start();
> final ActiveMQSession session = (ActiveMQSession) connection
> .createSession(false, Session.CLIENT_ACKNOWLEDGE);
> session.setBlobTransferPolicy(policy);
> final Destination destination = session
> .createQueue(ImageProcessorInterface.srcImgQueueName);
> final Destination tempDestination = session.createTemporaryQueue();
> final MessageProducer producer = session
> .createProducer(destination);
> final MessageConsumer responseConsumer = session
> .createConsumer(tempDestination);
> responseConsumer.setMessageListener(new MessageListener() {
> producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
> for (int i = 0; i < MESSAGES_NUMBER; i++) {
> InputStream data = ImageProducer.class
> .getResourceAsStream("/sample_image.jpg");
> System.out.println("Data stream is " + data);
> final BlobMessage message = session.createBlobMessage(data);
> message.setJMSReplyTo(tempDestination);
> message.setJMSCorrelationID(generateMsgId());
> producer.send(message);
> Thread.sleep(SLEEP_TIME);
> }
> } catch (final Exception e) {
> throw new RuntimeException(e);
> }
> System.out.println("Done");
> }
> ===============================================================================
>
> to inject a custom BlobTransferPolicy into ActiveMQConnectionFactory,
> ActiveMQConnection and ActiveMQSession instances - but as far as I can see,
> there's noting about an attempt to upload the file in logs. At this point I'm
> stuck :)
>
>
Hello,
First try this. Set CopyMessageOnSend to false on your connection. See
http://www.nabble.com/A-problem-with-blobmessage-on-activemq-5.0-td15523989.html#a17364301
If this is true (default) the Upload does not work.
If that will not help please provied the whole code including the broker
an jetty start. I think you will start the broker and jetty programmaticaly.
regards
Marco
|