Apache Camel + JMS and Bean Components + SpringBoot

preview_player
Показать описание
How to use JMS component in Apache Camel? How to use Bean component in Apache Camel?
Рекомендации по теме
Комментарии
Автор

pom.xml
<!-- IBM MQ -->
<dependency>


</dependency>
<dependency>


<version>3.0.6</version>
</dependency>

<!-- Apache Camel -->
<dependency>


<version>4.3.0</version>
</dependency>
<dependency>


<version>4.3.0</version>
</dependency>

fvhiveproductionsbyLadyAga
Автор

Bean Component for Camel route
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import

@Component("testBean")
public class BeanProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
var body =

}
}

fvhiveproductionsbyLadyAga
Автор

Test Controller
@RestController
@SpringBootApplication
@EnableJms
public class Application {

@Autowired
JmsTemplate jmsTemplate;

@Autowired
ProducerTemplate producerTemplate;

@GetMapping("test1")
public String test() {
producerTemplate.send( "direct:hello1", p -> {
p.getMessage().setBody( "Hi this is ApacheCamel for JMSClient to process");
});
return "ok";
}

@GetMapping("test2")
public String test2() {
producerTemplate.send( "direct:hello2", p -> {
p.getMessage().setBody( "Hi this is ApacheCamel for Bean component to process");
});
return "ok";
}

@GetMapping("/send")
if(qname==null) {
qname = "testQname1";
}
jmsTemplate.convertAndSend(qname, "hello world!");
return "msg sent";
}

@GetMapping("/rcv")
public String rcv() throws Exception {
return
}

fvhiveproductionsbyLadyAga
Автор

JMS Component Configuration
import
import
import
import
import

@Configuration
public class MyJmsComponentConfig {
@Bean
public JmsTransactionManager jmsTransactionManager(final ConnectionFactory connectionFactory) {
JmsTransactionManager jmsTransactionManager = new JmsTransactionManager();

return jmsTransactionManager;
}

@Bean
public JmsComponent jmsComponent(final ConnectionFactory connectionFactory, final JmsTransactionManager jmsTransactionManager) {
JmsComponent jmsComponent = JmsComponent.jmsComponentTransacted(connectionFactory, jmsTransactionManager);
return jmsComponent;
}
}

fvhiveproductionsbyLadyAga
Автор

Camel route configuration
import
import
import
import

@Configuration
public class MyCamelRouteConfig extends RouteBuilder {


@Override
public void configure() throws Exception {
from("direct:hello1")
.log(LoggingLevel.DEBUG, log, "New message received")
.process(exchange -> {
String convertedMessage = + " is converted";

})
.to("jms:testQname1")
.log(LoggingLevel.DEBUG, log, "Message is successfully sent to the output queue")
.end();
from("direct:hello2")
.log(LoggingLevel.DEBUG, log, "New message received")
.process(exchange -> {
String convertedMessage = + " is converted";

})
.to("bean:testBean")
.log(LoggingLevel.DEBUG, log, "Message is successfully sent to the output queue")
.end();

}
}

fvhiveproductionsbyLadyAga
Автор

application.properties
ibm.mq.queueManager=QM1


ibm.mq.user=admin
ibm.mq.password=passw0rd

fvhiveproductionsbyLadyAga
Автор

JMS Client
import
import

@Component
public class JmsClient {

@JmsListener(destination = "testQname1")
public void receiveMessage(String msg) {
System.out.println("Received <" + msg + ">");
}
}

fvhiveproductionsbyLadyAga
Автор

How to install IBM MQ?
1. docker pull ibmcom/mq:latest
2. docker images
3. docker volume create qm1data
4. docker run --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --volume qm1data:/mnt/mqm --publish 1414:1414 --publish 9443:9443 --detach --env MQ_APP_PASSWORD=passw0rd ibmcom/mq:latest

How to access web console?

Username: admin
Password: passw0rd

fvhiveproductionsbyLadyAga
visit shbcf.ru