In the last quarter, I gave a talk where I explored some of the tools and approaches that can help you break down these silos and integrate your microservices with external systems seamlessly, allowing for faster development cycles and more efficient integration.
The talk combines my current experience as a thought leader in the integration space, working on the Apache Camel project, and my past experiences where I encountered many integration challenges developing Microservices.
The recording from the DevNation Day: Modern App Dev is already available.
You can access the presentation slides and code here.
If you have any questions or feedback, please feel free to reach out.
Enjoy the talk!
]]>We dived into so many interesting topics, like Microsoft’s acquisition of Activision Blizzar, the brand-new Tesla APIs, and the hot topics in open source, discussing the Cillium certification, Apache Camel 4.1 release. We uncovered the first major security flaw in HTTP, and delved into the latest happenings at Clever Cloud.
If you want to tune in and catch our lively discussion in French, you can find the full episode here. A big shoutout to Quentin Adam and Devoxx Morocco team for this exciting opportunity! I hope you enjoy it as much as I did!
PS: the resume of the episode was inspired by the text posted with the episode.
]]>In this session, we leveraged Apache Camel to explore integration patterns that add flexibility and resilience to your evolving architecture.
The recording is already available.
You can access the presentation slides and code here.
If you have any questions or feedback, please feel free to reach out.
Enjoy the talk!
]]>TThis blog post assumes that readers are already familiar with Quarkus, Apache Camel, and Microshift.
I created very quickly a Quarkus application. It has these 2 fonctionnalities:
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from RESTEasy Reactive on Microshift";
}
from("timer:foo?period=&delay=")
.log("Hello! I'm running #ApacheCamel & #Quarkus on Microhsift");
I installed Microshift on my computer, as well as the Kubernetes CLI and OpenShift CLI.
I have built my docker image and pushed it to my docker hub: zbendhiba/camel-quarkus-iot-jvm:1.0.
To deploy the application in Microshift, I’ve created the Kubernetes deployment file. You may consider updating the kubernetes.yml
file and set the right namespace name. I’m using the namespace default
.
Installing the application on Microshift.
$ kubectl apply -f kubernetes.yml
Make sure the pod is running.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
camel-quarkus-iot-jvm-d46b967c4-c6lq6 1/1 Running 1 2d22h
Open a shell in the running container by running the following command:
$ oc rsh <pod-name>
Replace
Once you’re in the container, you can use curl to test the RESTEasy Reactive endpoint, by running the following command :
$ curl localhost:8080/hello
Hello from RESTEasy Reactive on Microshift
Now you can exit :
$ exit
Open a shell in the running container by running the following command:
$ oc logs <pod-name>
Replace
This shows the log of stating application, but also many line of logs containing INFO [route1] (Camel (camel-1) thread #1 - timer://foo) Hello! I'm running #ApacheCamel & #Quarkus on Microhsift
.
Now that the experiment is finished, we can delete the app.
$ kubectl delete all -l app.kubernetes.io/name=camel-quarkus-iot-jvm
I decided to share some of the things I wrote in my journal about 2022, mostly related to my professional life.
2022 started for me with great recognition for my work around Apache Camel, as I was nominated in January 2022 as a PMC member of the Apache Camel project. That was something totally unexpected for me. I still can’t believe I’m living my dream of being part of Red Hat and getting paid to contribute to such an awesome project, being part of such a prestigious Open Source Foundation. I am so lucky, honored and grateful to be part of the Apache Camel community and to grow with these amazing contributors. And as you can imagine, contributing the whole year to the project is the biggest achievement of the year.
I’ve learned a lot this year, and I’m so excited for all the good things we’re going to accomplish this year, starting with Camel 4.
2022 is the year we started seeing each other again in real life. I finally had the opportunity to meet my team for the first time. Spending time with my amazing, talented, smart and kind teammates was just magical. I’m so lucky to be part of this team and to grow personally and professionally among this great group of people.
I had the honor of meeting so many wonderful and friendly people, around conferences, from different communities, such as the Java community. 2022 I realized that there is hope in this world, so many nice people who give so much to communities, without even asking. I can never thank everyone. If you crossed my path in 2022, you are probably one of them, and you have probably had a positive impact on my life, and thank you for being you.
I joined the CFP committees of 2 major conferences Devoxx France and Devoxx Morocco. Reviewing many proposals can be exhausting, but I only feel joy. I hope to contribute in some way to keep them great and long lasting.
2022 is the year I started speaking at IRL conferences and events. I was so stressed at first but my confidence never stopped growing. I love sharing my knowledge and talking about Apache Camel. A big thank you to all the organizers of conferences, events that gave me my chance or even invited me. I am so grateful for these opportunities.
I had the chance to give a workshop on Apache Camel with Alexandre Gallice, and it was a blessing to spend 3 hours with a small group of people and have the opportunity to share more about the awesome integration capabilities of Apache Camel, and discuss real user issues and collect constructive feedback. I have really enjoyed giving labs and hope to have more opportunities to do labs in the future.
I also liked to give a little closing keynote for the Red Hat DevNation France day.
As an Open source contributor, I was invited to speak on the radio, which I had never considered. I enjoyed the experience and hope to one day be legit to speak on a tech podcast.
By the way, you can watch some of the recordings.
I was lucky and blessed to be interviewed by one of my favorite book authors for their upcoming book. I sat in a Parisian cafe for a few hours chatting with one of my most inspiring people and enjoying the moment. It felt a bit like being in a movie. And I hope I can see some of my stories in the book one day.
Working from home is great but I started having back pain. Last year, I started walking daily. I have one sports session a week with a coach and I bought a sit-stand desk. My health has since improved. I have lazy days, but the most important thing is to stay active almost every day.
I have visited many cities where I have never been, whether for conferences or with family: London, Dublin, Bucharest, Montpellier, Grenoble, Bilbao, San Sebastian, Saint-Jean-de-Luz, Biarritz…
Small note for the end, I do not have a perfect life and I also had difficult moments this year, especially on a personal level. Sitting down for a moment of gratitude is important to me, and motivates me to do many more things in 2023.
I end my post with the craziest photo of the year from the Quarkus World Tour at Devoxx UK.
]]>This workshop is a good start with Apache Camel, even if Quarkus is not your preferred runtime environment. This is an introduction to Apache Camel concepts, such as Routes, Components and Integration Patterns.
You can try the workshop yourself by following the steps in this link.
]]>I’ve decided to create a series of blog posts to help in getting started with Camel Quarkus. This is the first one of the series.
In this blog post, I show you how to quickly create and run your first camel-quarkus application. We will create a simple Quarkus application, that shows a log every 1s. To achieve this, we will use the Camel Quarkus Timer Extension to set up our timer.
Note that this post was created using the Quarkus version 2.6.0.Final. The source code of the example is available at the examples repository
Before jumping into the code, let’s make sure you have everything installed to run the first example. You’ll need :
Start your application from code.quarkus.app.
Create a class, named TimerRouteBuilder. The class will contain the Camel Route Configuration. For this purpose, TimerRouteBuilder should extend RouteBuilder. The RouteBuilder is a base class which is derived from to create routing rules using the DSL. Instances of RouteBuilder are then added to the CamelContext.
Override the configure method.
This is how the TimerRouteBuilder class should look like at this step.
import yourpackagename;
public class TimerRouteBuilder extends RouteBuilder {
/**
* Let's configure the Camel routing rules using Java code...
*/
@Override
public void configure() throws Exception {
}
}
Let’s create a new Route with the Camel Timer extension, with this configuration:
The Route using the timer will start looking like this :
from("timer:timerTest?period=1000")
...
Now let’s add a log message.
from("timer:timerTest?period=1000")
.log("Hello World!");
This is how the TimerRouteBuilder class should look like at this step.
package yourpackagename;
import org.apache.camel.builder.RouteBuilder;
public class TimerRouteBuilder extends RouteBuilder {
/**
* Let's configure the Camel routing rules using Java code...
*/
@Override
public void configure() throws Exception {
from("timer:timerTest?period=1000")
.log("Hello World!");
}
}
Let’s start the application in dev mode. The Quarkus dev mode enables hot deployment with background compilation.
To start the application in dev mode, run this command in a terminal :
./mvnw compile quarkus:dev
You should be able to see that the application has started, and that the timer is is logging our message every 1s. Exemple of logs:
2021-12-22 19:04:54,872 INFO [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.6.0.Final) started in 1.309s. Listening on: http://localhost:8080
2021-12-22 19:04:54,873 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-12-22 19:04:54,873 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [camel-core, camel-timer, cdi, smallrye-context-propagation, vertx]
2021-12-22 19:04:55,823 INFO [route1] (Camel (camel-1) thread #1 - timer://timerTest) Hello World!
2021-12-22 19:04:56,823 INFO [route1] (Camel (camel-1) thread #1 - timer://timerTest) Hello World!
2021-12-22 19:04:57,823 INFO [route1] (Camel (camel-1) thread #1 - timer://timerTest) Hello World!
Leave the application running and update the log message, set the message “Hello World Camel Timer!”. Save the TimeRouteBuilder class, and see the logs. You’ll notice that the application was re-deployed and you’ll have the new log message. Also, notice that deployment was so quick. The application and the Camel Route was started within a few milliseconds.
2021-12-22 19:11:01,206 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (Quarkus Main Thread) Apache Camel 3.14.0 (camel-2) started in 2ms (build:0ms init:1ms start:1ms)
2021-12-22 19:11:01,208 INFO [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.6.0.Final) started in 0.225s. Listening on: http://localhost:8080
2021-12-22 19:11:01,209 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-12-22 19:11:01,209 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [camel-core, camel-timer, cdi, smallrye-context-propagation, vertx]
2021-12-22 19:11:01,209 INFO [io.qua.dep.dev.RuntimeUpdatesProcessor] (Timer-0) Live reload total time: 0.558s
2021-12-22 19:11:02,206 INFO [route2] (Camel (camel-2) thread #2 - timer://timerTest) Hello World Camel Timer!
2021-12-22 19:11:03,206 INFO [route2] (Camel (camel-2) thread #2 - timer://timerTest) Hello World Camel Timer!
2021-12-22 19:11:04,206 INFO [route2] (Camel (camel-2) thread #2 - timer://timerTest) Hello World Camel Timer!
2021-12-22 19:11:05,206 INFO [route2] (Camel (camel-2) thread #2 - timer://timerTest) Hello World Camel Timer!
Now stop the dev mode using Ctrl+C. Then package the application :
$ ./mvnw package
$ java -jar target/quarkus-app/quarkus-run.jar
Now, you have created your first Quarkus application with Camel.
]]>