Search code examples
postgresqlspring-bootapache-camelspring-camel

how to route or consume from amq broker redhat to postgresql?


I want to consume message from my AMQ 7 queue and insert it into postgresql database. I am using spring camel. So far, I've done this

<route id="simple-route">
    <from uri="amqp:queue:tes"/>
    <log id="route-log" message=">>> ${body} testing message in body"/>
    <to uri="amqp:queue:simpleQueue"/>
    <log message="${in.body}" />
</route>
<bean id="amqp" class="org.apache.camel.component.amqp.AMQPComponent">
    <property name="connectionFactory">
        <bean class="org.apache.qpid.jms.JmsConnectionFactory">
            <property name="username" value="admin" />
            <property name="password" value="password"/>
            <property name="remoteURI" value="amqp://192.168.150.5:5672" />
        </bean>
    </property>
</bean>

I am confusing how to write inside that uri to insert into postgre. My data in queue is json type.


Solution

  • To insert your data directly into DB you have an option of using camel sql component

    <to uri="sql:insert into postgre_table (record_id, record_text) values (:#${header.record_id}, :#${header.record_text})?dataSource=#PostgreDataSource"/>
    

    and your data source should looks like

    <bean id="PostgreDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"/>
        <property name="url" value="jdbc:postgresql://localhost:5432/postgre"/>
        <property name="username" value="user"/>
        <property name="password" value="password"/>
    </bean>