Yeah, I think this is a good idea. I thought by talking about the "message converter" you mean the Camel type converter mechanism...
Best, Christian On Sat, Aug 4, 2012 at 7:09 AM, Pontus Ullgren <[email protected]> wrote: > I am talking about the (spring) jms message converter used by the jms > component to create jms messages is handed the correct session. > See the messageConverter option on the JMS component page. > > Best regards > Pontus > Send from my phone > Den 4 aug 2012 00:35 skrev "Christian Müller" <[email protected] > >: > > > I don't think a Converter is the right choice, if you need a JMS > connection > > for this. How should the Connector know which broker url should be used? > > You cannot inject dependencies into your converter... > > > > Best, > > Christian > > > > On Fri, Aug 3, 2012 at 8:21 AM, Pontus Ullgren <[email protected]> > wrote: > > > > > Hello, > > > > > > Sorry for repeating myself but you should really have a look at doing > > this > > > in a message converter. First you will not have to cast it to a > exchange. > > > And second you will then be handed the same session that is used to > > create > > > the producer in the component. So you will participate in the same unit > > of > > > work. Which I doubt is true if you create your own connection/session. > > But > > > I am currently travelling so I can not test this. > > > > > > //Pontus > > > Send from my phone > > > Den 3 aug 2012 00:14 skrev "brenthale" <[email protected]>: > > > > > > > Thanks for all the suggestions. > > > > > > > > I've been trying to create a DataFormat to handle this. I'm stuck > > trying > > > > to > > > > integrate an ActiveMQ ActiveMQBlobMessage with the > > > > org.apache.camel.Exchange > > > > class working with org.apache.camel.Message's. You can't typecast > one > > > into > > > > the other. > > > > > > > > Here's my current unmarshal method: > > > > > > > > public Object unmarshal(Exchange exchange, InputStream stream) > throws > > > > Exception { > > > > ActiveMQConnection connection; > > > > ActiveMQSession session; > > > > > > > > ActiveMQBlobMessage blobMessage; > > > > > > > > connection = (ActiveMQConnection) > > > > activeMQConnectionFactory.createConnection(); > > > > connection.start(); > > > > > > > > session = (ActiveMQSession) connection.createSession(false, > > > > Session.AUTO_ACKNOWLEDGE); > > > > > > > > blobMessage = (ActiveMQBlobMessage) > > > session.createBlobMessage(stream); > > > > blobMessage.setMessageId(new > > > > MessageId(exchange.getIn().getMessageId())); > > > > > > > > // Get the data uploaded to the ActiveMQ fileserver > > > > blobMessage.getBlobUploader().upload(blobMessage); > > > > > > > > // org.apache.camel.Exchange is a Camel object expecting a > > > > org.apache.camel.Message in the Out. > > > > // BlobMessage is an ActiveMQ > > > > org.apache.activemq.command.ActiveMQBlobMessage. > > > > // This line doesn't work. They don't cast. > > > > // exchange.setOut(blobMessage); > > > > > > > > // And this was a sad attempt at trying to get around it. > > > > // DefaultMessage camelMessage = new DefaultMessage(); > > > > // camelMessage.setExchange(exchange); > > > > // camelMessage.setBody(blobMessage, > > > > org.apache.activemq.command.Message.class); > > > > // > camelMessage.setMessageId(blobMessage.getMessageId().toString()); > > > > // exchange.setOut(camelMessage); // kinda by-passes things. > > > > > > > > // if (! (((JmsMessage) message).getJmsMessage() instanceof > > > > BlobMessage)) > > > > { > > > > exchange.setOut((JmsMessage)(BlobMessage)blobMessage); > > > > // ((JmsMessage)exchange.getOut()).setJmsMessage(blobMessage); > > > > > > > > return blobMessage; > > > > } > > > > > > > > > > > > When the setOut() is made I get the following exception. > > > > > > > > exchange.setOut((JmsMessage)(BlobMessage)blobMessage) = Type mismatch > > > Can't > > > > assign org.apache.activemq.command.ActiveMQBlobMessage to > > > > org.apache.camel.Message > > > > > > > > > > > > When working with BlobMessages sent normally (via a producer.send()) > I > > am > > > > able to retrieve the BlobMessage this way: > > > > > > > > if (! (((JmsMessage) message).getJmsMessage() instanceof > > > BlobMessage)) > > > > { > > > > throw new CdsMsgException("Error processing batch message: > > > Expected a > > > > BlobMessage"); > > > > } > > > > BlobMessage blobMessage = (BlobMessage) ((JmsMessage) > > > > message).getJmsMessage(); > > > > > > > > But I'm at a loss as to how to change the Message to a BlobMessage > > inside > > > > of > > > > a DataFormat. > > > > > > > > I assume I'm missing something fairly trivial. > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > ----- > > > > > > > > Brent > > > > -- > > > > View this message in context: > > > > > > > > > > http://camel.465427.n5.nabble.com/Is-it-possible-to-create-a-custom-DataFormat-to-translate-a-message-into-a-BlobMessage-tp5716679p5716720.html > > > > Sent from the Camel - Users mailing list archive at Nabble.com. > > > > > > > > > >
