camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebodev <sebastian.berga...@btc-ag.com>
Subject Apachem Camel with Oracle AQ
Date Thu, 02 Apr 2009 06:24:37 GMT

Hi,

i'm using Oracle AQ with apache camel. I have a very simple code like this:

---
package pl.sbsd.apachecamel.oracleaq;

import javax.jms.ConnectionFactory;

import oracle.jdbc.pool.OracleDataSource;
import oracle.jms.AQjmsFactory;

import org.apache.camel.CamelContext;
import org.apache.camel.Consumer;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.impl.DefaultCamelContext;

public class OracleAQApp {

	private String uri;
	private String login;
	private String password;

	private final String jdbcUrl = "jdbc:oracle:thin:@xxx:1521:xxx";

	private CamelContext camel;
	private ConnectionFactory connectionFactory;
	private ProducerTemplate producerTemplate;

	public OracleAQApp(String uri, String login, String password)
			throws Exception {
		this.uri = uri;
		this.login = login;
		this.password = password;
		OracleDataSource dataSource = new OracleDataSource();
		dataSource.setURL(jdbcUrl);
		dataSource.setUser(login);
		dataSource.setPassword(password);
		connectionFactory = AQjmsFactory.getQueueConnectionFactory(dataSource);
		camel = new DefaultCamelContext();
		JmsComponent jmsComponent = new JmsComponent(camel);
		jmsComponent.setConnectionFactory(connectionFactory);
		camel.addComponent("jms", jmsComponent);
		producerTemplate = camel.createProducerTemplate();
		Consumer consumer = camel.getEndpoint(uri).createConsumer(
				new Processor() {

					public void process(Exchange exchange) throws Exception {
						System.out.println("New message!");
						System.out.println(exchange.getIn().getBody());
					}

				});
		consumer.start();
		camel.start();
	}

	public void send(String message) throws InterruptedException {
		producerTemplate.sendBody(uri, message);
		Thread.sleep(500000);
	}

}
---

I'm sending some message to the queue and the consumer will consume it. That
works with my local installation of oracle database. When i'm using remote
database which is in the LAN then the messages are writting into the queue
but consumer can't dequeue them. In the eclipse console i get this message:

---
Exception in thread "DefaultMessageListenerContainer-1"
java.lang.NullPointerException
	at java.lang.String.indexOf(String.java:1564)
	at java.lang.String.indexOf(String.java:1546)
	at
org.springframework.jms.support.JmsUtils.buildExceptionMessage(JmsUtils.java:255)
	at
org.springframework.jms.listener.DefaultMessageListenerContainer.handleListenerSetupFailure(DefaultMessageListenerContainer.java:745)
	at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:897)
	at java.lang.Thread.run(Thread.java:595)
---

I have debugged the DefaultMessageListenerContainer and there is a exception
with information: "JMS-120: Dequeue failed.". I dont now what can it be.
Everythink works when i'm using local database. I've tested many jdbc
drivers "ojdbc*.jar" and oracle aq apis "aqapi*.jar" but nothing. I've
privileges to dequeue the messages.

Kind regards
Sebastian
-- 
View this message in context: http://www.nabble.com/Apachem-Camel-with-Oracle-AQ-tp22841667p22841667.html
Sent from the Camel Development mailing list archive at Nabble.com.


Mime
View raw message