camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen" ...@silverbullet.dk>
Subject RE: MS SQL Message Service endpoint
Date Tue, 08 Jul 2008 10:44:34 GMT
Hi

#1
The tutorial is for Camel 1.4
The example is included beginning from Camel 1.4.

#2
This is a maven, end-users can if they want use maven as more and more people use this. 

#3
In Camel 1.4 we have ANT build files to run the example also.


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: Vadim Chekan [mailto:kot.begemot@gmail.com] 
Sent: 8. juli 2008 00:33
To: camel-user@activemq.apache.org
Subject: Re: MS SQL Message Service endpoint

I reviewed the tutorial
"http://activemq.apache.org/camel/tutorial-jmsremoting.html" once
again looking for something I may miss.

1. It is not mentioned which version of Camel it address, 1.3 or 1.4(snapshot?)

2. It is not clear, does tutorial reviews the existing example or it
assumes the reader will follow the instructions to create application
step-by-step. For example at the beginning there is a command "mvn
archetype:create -DgroupId=org.example
-DartifactId=CamelWithJmsAndSpring" without explanation what I suppose
to do with it. If I execute it then it is not clear what I should do
next because the following article shows just fragments of code and
configs. If I should ignore  then why it is there? Confusing.

3. Article assumes that we will run application from maven plugin.
Maven may be fine for development but is not the best choice for
tutorial because very important area "how do I deploy it to ActiveMQ"
remains uncovered.

Bingo!!!!!
I suspect that "package" tag is for addressing a class under some
specific environment, like maven.
What worked for me is:
   <camelContext id="camel"
xmlns="http://activemq.apache.org/camel/schema/spring">
	   <routeBuilderRef id="routeBuilder" ref="builderBean"/>
   </camelContext>

<bean id="builderBean" class="mycompany.org.test.MessageBrokerPackage"/>

At  least I was able to move message from one queue to another with
this construction.
routeBuilderRef was not described anywhere in the documentation at all!

Vadim.

On Mon, Jul 7, 2008 at 9:22 AM, Vadim Chekan <kot.begemot@gmail.com> wrote:
> I used Eclipse to create my class. Linked the project to
> camel-core.....jar. Then deployed (copied) the jar to lib/optional. I
> thought that camel scans all jars in there but now I think I may be
> mistaken. Should I add my jar to classpath environment variable?
> I did not use Maven because I've never worked with it before and I'm
> trying to use familiar tools as much as possible.
>
> Vadim.
>
> On Sun, Jul 6, 2008 at 9:03 PM, Claus Ibsen <ci@silverbullet.dk> wrote:
>> Hi
>>
>> How do you start your test? We need to know some more about this to be able to help.
Camel uses classloading to scan for your class and this can depend in what server you run
your tests.
>>
>>
>> Med venlig hilsen
>>
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: Vadim Chekan [mailto:kot.begemot@gmail.com]
>> Sent: 7. juli 2008 03:46
>> To: camel-user@activemq.apache.org
>> Subject: Re: MS SQL Message Service endpoint
>>
>> I've set log4j level to TRACE and with camel-1.4 (which has more
>> debuging info) I got the following:
>> DEBUG ResolverUtil                   - Searching for implementations
>> of org.apache.camel.builder.RouteBuilder in packages:
>> [org.mycompany.test]
>> TRACE ResolverUtil                   - Searching for: is assignable to
>> RouteBuilder in package: org/mycompany/test using classloader:
>> java.net.URLClassLoader@13bad12
>> TRACE ResolverUtil                   - It's not an osgi bundle classloader
>> DEBUG ResolverUtil                   - Found: []
>>
>> What's the deal with osgi?
>>
>> Vadim.
>>
>> On Sun, Jul 6, 2008 at 6:27 PM, Vadim Chekan <kot.begemot@gmail.com> wrote:
>>> Good, tutorial helped a little bit.
>>> Now I've stuck with this:
>>> DEBUG ResolverUtil                   - Searching for implementations
>>> of org.apache.camel.builder.RouteBuilder in packages:
>>> [org.mycompany.test]
>>> DEBUG ResolverUtil                   - Found: []
>>>
>>> I've compiled and put to lib/optional/MyTest.jar the following code:
>>> ========================================================
>>> package org.mycompany.test;
>>>
>>> import org.apache.camel.builder.RouteBuilder;
>>>
>>> public class Mover1 extends RouteBuilder {
>>>        public void configure() throws Exception {
>>>                from("messagemq:vadim1").to("messagemq:vadim2");
>>>        }
>>> }
>>> ======================================================
>>>
>>> Any clues why my class in not found?
>>>
>>> Vadim.
>>>
>>> On Fri, Jul 4, 2008 at 12:24 AM, Claus Ibsen <ci@silverbullet.dk> wrote:
>>>> Hi Vlad
>>>>
>>>> Ah you are digging into the auto discovery feature from the <package>
tag.
>>>> E.g. from the tutorial, where there is a <package> tag in the camel
context.
>>>>
>>>>    <!-- declare a camel context that scans for classes that is RouteBuilder
>>>>         in the package org.apache.camel.example.server -->
>>>>    <camel:camelContext id="camel">
>>>>        <camel:package>org.apache.camel.example.server</camel:package>
>>>>        <!-- enable JMX connector so we can connect to the server and browse
mbeans -->
>>>>        <!-- Camel will log at INFO level the service URI to use for connecting
with jconsole -->
>>>>        <camel:jmxAgent id="agent" createConnector="true"/>
>>>>    </camel:camelContext>
>>>>
>>>> Yes it will look for classes in the package that extends RouteBuilder.
>>>> The RouteBuilder has a configure() method where you define the camel routing
in Java DSL.
>>>>
>>>> You can check out the tutorial:
>>>> http://activemq.apache.org/camel/tutorials.html
>>>>
>>>> So this is a good way to "kick-start" your camel context that its spring
configured but you can use the Java DSL that is more powerful than XML. However Camel supports
both, and mix/match.
>>>>
>>>>
>>>>
>>>> Med venlig hilsen
>>>>
>>>> Claus Ibsen
>>>> ......................................
>>>> Silverbullet
>>>> Skovsgårdsvænget 21
>>>> 8362 Hørning
>>>> Tlf. +45 2962 7576
>>>> Web: www.silverbullet.dk
>>>>
>>>> -----Original Message-----
>>>> From: Vadim Chekan [mailto:kot.begemot@gmail.com]
>>>> Sent: 4. juli 2008 02:05
>>>> To: camel-user@activemq.apache.org
>>>> Subject: Re: MS SQL Message Service endpoint
>>>>
>>>> Thanks Claus,
>>>> I'm slowly digging through it.
>>>> Following things are still not clear to me:
>>>> What are the conventions on classes in the package? Should class
>>>> implement main() method to be called? Or any class inherited from
>>>> RouteBuilder will be instaniated? I'm trying to understand how camel
>>>> decides from "package" which class and method to call.
>>>>
>>>> Vadim.
>>>>
>>>> On Wed, Jul 2, 2008 at 10:33 PM, Claus Ibsen <ci@silverbullet.dk> wrote:
>>>>> Hi
>>>>>
>>>>> Created ticket CAMEL-658 for improving the wiki documentation.
>>>>>
>>>>> Thanks for reporting your troubles with it, we want to improve it.
>>>>>
>>>>>
>>>>> Med venlig hilsen
>>>>>
>>>>> Claus Ibsen
>>>>> ......................................
>>>>> Silverbullet
>>>>> Skovsgårdsvænget 21
>>>>> 8362 Hørning
>>>>> Tlf. +45 2962 7576
>>>>> Web: www.silverbullet.dk
>>>>>
>>>>> -----Original Message-----
>>>>> From: Claus Ibsen [mailto:ci@silverbullet.dk]
>>>>> Sent: 3. juli 2008 07:29
>>>>> To: camel-user@activemq.apache.org
>>>>> Subject: RE: MS SQL Message Service endpoint
>>>>>
>>>>> Hi Vlad
>>>>>
>>>>> Thanks for the investigations. Yes there could be an odd issue with the
JDBC component, as I would assume it could consume from the database = reading.
>>>>>
>>>>> As a work around or how to get it working, you can get an endpoint in
front to kick it off.
>>>>>
>>>>> from("timer://kickoff?delay=10000").setBody("select * from xxxx").to("jdbc:msServiceBroker").to("activemq:aspcust1");
>>>>>
>>>>>
>>>>> This is from a unit test in camel-jdbc. The timer fires every 10th second
and queries the database and send the result to the mock. In your case the activemq instead.
>>>>>
>>>>>                from("timer://kickoff?period=10000").
>>>>>                    setBody(constant("select * from customer")).
>>>>>                    to("jdbc:testdb").
>>>>>                    to("mock:result");
>>>>>
>>>>> Notice that the result is a list of map objects, each row is a map with
the columnname as the key. From another unit test:
>>>>>
>>>>>        // assertions of the response
>>>>>        assertNotNull(out);
>>>>>        assertNotNull(out.getOut());
>>>>>        ArrayList<HashMap<String, Object>> data = out.getOut().getBody(ArrayList.class);
>>>>>        assertNotNull("out body could not be converted to an ArrayList
- was: "
>>>>>            + out.getOut().getBody(), data);
>>>>>        assertEquals(2, data.size());
>>>>>        HashMap<String, Object> row = data.get(0);
>>>>>        assertEquals("cust1", row.get("ID"));
>>>>>        assertEquals("jstrachan", row.get("NAME"));
>>>>>        row = data.get(1);
>>>>>        assertEquals("cust2", row.get("ID"));
>>>>>        assertEquals("nsandhu", row.get("NAME"));
>>>>>
>>>>> Med venlig hilsen
>>>>>
>>>>> Claus Ibsen
>>>>> ......................................
>>>>> Silverbullet
>>>>> Skovsgårdsvænget 21
>>>>> 8362 Hørning
>>>>> Tlf. +45 2962 7576
>>>>> Web: www.silverbullet.dk
>>>>>
>>>>> -----Original Message-----
>>>>> From: Vadim Chekan [mailto:kot.begemot@gmail.com]
>>>>> Sent: 3. juli 2008 01:33
>>>>> To: camel-user@activemq.apache.org
>>>>> Subject: Re: MS SQL Message Service endpoint
>>>>>
>>>>> Ok, I got this one. My ActiveMQ installation does not contain camel-jdbc.jar.
>>>>> It runs fine now but it gives me "Failed to execute main task. Reason:
>>>>> java.lang.NoClassDefFoundError:
>>>>> org/springframework/aop/support/AopUtils".
>>>>> Copied spring-aop-2.5.1.jar
>>>>>
>>>>> Ok, now:
>>>>> Caused by: org.apache.camel.RuntimeCamelException: A JDBC Consumer would
be the
>>>>> server side of database! No such support here at
>>>>> org.apache.camel.component.jdbc.JdbcEndpoint.createConsumer(JdbcEndpoint.java:56)
>>>>>
>>>>> Hmm, I remember seeing this exception in the source code but I do not
>>>>> understand it. why <from uri="jdbc:msServiceBroker" /> tries to
create
>>>>> a consumer. I thought that "from" is a message producer, right?
>>>>>
>>>>>
>>>>> On Wed, Jul 2, 2008 at 12:33 PM, Vadim Chekan <kot.begemot@gmail.com>
wrote:
>>>>>> Here is my progress:
>>>>>> First of all it complained about DriverManagerDataSource class so
I've
>>>>>> downloaded spring-jdbc-2.5.1.jar and put it to lib/optional
>>>>>> Now I'm getting
>>>>>> =======================================
>>>>>> Caused by: org.apache.camel.NoSuchEndpointException: No endpoint
could be found
>>>>>> for: jdbc:msServiceBroker
>>>>>>        at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelCo
>>>>>> =======================================
>>>>>>
>>>>>> My configuration is:
>>>>>> ===============================================================
>>>>>>   <camelContext id="camel"
>>>>>> xmlns="http://activemq.apache.org/camel/schema/spring">
>>>>>>           <route>
>>>>>>                   <from uri="jdbc:msServiceBroker" />
>>>>>>                   <to uri="activemq:aspcust1" />
>>>>>>           </route>
>>>>>>   </camelContext>
>>>>>>
>>>>>>        <bean id="msServiceBroker"
>>>>>> class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>>>>>>                <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"/>
>>>>>>                <property name="url"
>>>>>> value="jdbc:jtds:sqlserver://aspcust1/LogQueue;instance=main"/>
>>>>>>                <property name="username" value="****"/>
>>>>>>                <property name="password" value="****"/>
>>>>>>        </bean>
>>>>>> ===============================================================
>>>>>>
>>>>>> I thought that it it the way this thing works: after jdbc uri you
>>>>>> specify a bean, but apparently I got it wrong. I'm trying to define
>>>>>> endpoint explicitly now withing camel context.
>>>>>> Any help please?
>>>>>>
>>>>>> BTW: there is an error in schema location in default configuration
>>>>>> file: http://activemq.apache.org/schema/core/activemq-core.xsd does
>>>>>> not exist. I had to change it to
>>>>>> http://activemq.apache.org/schema/core/activemq-core-5.1.0.xsd to
make
>>>>>> my Visual Studio hints working ;)
>>>>>>
>>>>>> --
>>>>>> From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
>>>>>> is explicitly specified
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
>>>>> is explicitly specified
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
>>>> is explicitly specified
>>>>
>>>
>>>
>>>
>>> --
>>> From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
>>> is explicitly specified
>>>
>>
>>
>>
>> --
>> From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
>> is explicitly specified
>>
>
>
>
> --
> From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
> is explicitly specified
>



-- 
>From RFC 2631: In ASN.1, EXPLICIT tagging is implicit unless IMPLICIT
is explicitly specified

Mime
View raw message