Saggu
Saggu
  • 54
  • 356 716
NATS with Apache Camel | Choreography design pattern| Event Driven Service
Choreography design pattern| Event Driven Service using NATS with Apache Camel.
NATS is a high-performance messaging system designed for cloud-native applications. It provides lightweight communication with support for publish-subscribe, request-reply, and queuing patterns. NATS.io boasts simplicity, scalability, and resilience, making it ideal for microservices architectures and distributed systems. It ensures fast and reliable message delivery with minimal overhead, making it a popular choice for modern cloud applications.
NATS can be considered a message broker. It allows communication between different components of a distributed system by routing messages between publishers and subscribers. However, it distinguishes itself from traditional message brokers by its lightweight design, simplicity, and high performance, making it particularly well-suited for cloud-native and microservices architectures.
Code: github.com/jssaggu/camel-tutorial/
#NATS #ApacheCamel #java #springboot
Переглядів: 472

Відео

ToxiProxy Tutorial | Chaos Testing Part-2
Переглядів 6128 місяців тому
In the previous session we started discussing what Chaos Testing is. See here: ua-cam.com/video/lvI66klTusQ/v-deo.html In today’s session, we'll be exploring Toxiproxy, a powerful framework designed to simulate various network conditions.Tailored for testing, CI, and development environments, Toxiproxy excels in providing deterministic tampering with connections. But that's not all-it also offe...
What is Chaos Testing or Chaos Engineering?
Переглядів 1,3 тис.8 місяців тому
A predictable system is a myth. System failures are inevitable but you can be prepared for failures by building resilient systems. We will explore chaos engineering as a way to do exactly that. Chaos engineering or chaos testing is a Site Reliability Engineering (SRE) technique that simulates unexpected system failures to test a system's behavior and recovery plan. Based on what is learned from...
Spring Scheduler Tutorial
Переглядів 3 тис.10 місяців тому
In Spring Framework, a scheduler is a mechanism that allows you to schedule and execute tasks at specific times or with a certain frequency. The Spring framework provides a scheduling feature through the TaskScheduler and @Scheduled annotation, which are used for scheduling tasks, often known as jobs or cron jobs.
Camel JBang - Run Camel as Script using JBang
Переглядів 1,1 тис.11 місяців тому
What is Camel JBang? A JBang-based Camel app for easily running Camel routes camel.apache.org/manual/camel-jbang.html Thanks @ClausIbsen #JBang #camel #apachecamel #Camel-JBang
How to build Apache Camel Standalone applications without Spring framework
Переглядів 1,3 тис.Рік тому
How to build Apache Camel Standalone applications without Spring framework
What is Consumer Driven Contract (CDC)? How to use Spring Cloud Contract Testing?
Переглядів 3 тис.Рік тому
What is Consumer Driven Contracts (CDC)? How to use Spring Contract Testing? Agenda: 1. What is CDC or Consumer Driven Contract? 2. Why do I need this? 3. How to implement? 4. Workshop Code avaiable at: github.com/jssaggu/consumer-driven-contract
How to Debug Apache Camel Routes?
Переглядів 3,1 тис.Рік тому
How to Debug Apache Camel Routes? Code debugging is the process of finding and fixing errors in computer programs. When you write code, you may encounter problems that prevent your program from working correctly. Debugging helps you identify and resolve these issues so that your program functions as intended. To debug code, you follow these steps: Reproduce the problem: Try to recreate the issu...
Spring Shell: A Comprehensive Hands-On Tutorial
Переглядів 1,3 тис.Рік тому
In this tutorial, you will learn everything you need to know about Spring Shell, a powerful framework for building command-line applications. We'll cover the basics of setting up a Spring Shell project and walk you through creating your own custom commands, as well as using built-in commands and plugins. With a fully hands-on approach, you'll get to follow along with step-by-step instructions a...
Intercept Design Pattern using Apache Camel
Переглядів 1,1 тис.Рік тому
"intercept" refers to a feature called Intercepting Message Processors (Interceptors). Interceptors in Apache Camel allow you to intercept and modify message exchanges as they pass through Camel routes. They are used to perform cross-cutting concerns, such as logging, monitoring, security, and transformation, without modifying the main logic of the routes. github.com/jssaggu/camel-tutorial/
Enterprise Integration Patterns (EIPs) | Apache Camel
Переглядів 2,1 тис.Рік тому
Book: amzn.to/3njcibr Enterprise Integration Patterns (EIP) are a set of commonly used design patterns that help integrate different enterprise systems in a reliable and scalable way. EIPs provide a common language for developers to communicate and solve integration challenges, such as messaging, routing, and transformation. Using EIPs can help developers build more robust and flexible integrat...
Message Bus EIP with Apache Camel
Переглядів 1 тис.Рік тому
Designing Enterprise Integration Patterns with Apache Camel: Building a Message Bus for Efficient Communication. A message bus is a communication system that lets software components exchange messages with each other. It's like a central hub for sending and receiving messages between different systems, making integration easier. It allows applications to send messages without knowing the exact ...
Claim Check EIP Design Pattern using Apache Camel
Переглядів 733Рік тому
If you're building distributed systems, you're likely to encounter situations where messages are too large to be transmitted efficiently. One solution to this problem is the Claim Check pattern from the Enterprise Integration Patterns (EIP) catalog. This pattern allows you to replace the message content with a unique key, known as a claim check. The claim check can be used to retrieve the origi...
How to protect your application from overloading? Use Throttler EIP and build it using Apache Camel.
Переглядів 1,2 тис.Рік тому
Highly resilient applications must be able to cope with increases in request volume. To achieve this, load balancers are typically used to protect applications from being overwhelmed, but it is also important to have application-level controls. One way to prevent overloading a specific endpoint or violating an SLA with an external service is by implementing a throttler. The throttler regulates ...
Circuit Breaker Design Pattern using Apache Camel
Переглядів 3 тис.Рік тому
What is a Circuit Breaker design pattern and how to implement Circuit Breaker design pattern using Apache Camel.
Sring Boot Admin - A Complete Hands-On Tutorial
Переглядів 9 тис.Рік тому
Sring Boot Admin - A Complete Hands-On Tutorial
How to use Apache Camel Bean Component? Full hands on workshop.
Переглядів 3,2 тис.Рік тому
How to use Apache Camel Bean Component? Full hands on workshop.
Choreography Design Pattern | Distributed Transaction Management| MicroService Design Patterns
Переглядів 8 тис.2 роки тому
Choreography Design Pattern | Distributed Transaction Management| MicroService Design Patterns
Orchestration Design Pattern | Distributed Transaction Management| MicroService Design Patterns
Переглядів 19 тис.2 роки тому
Orchestration Design Pattern | Distributed Transaction Management| MicroService Design Patterns
SAGA Distributed Transactions Pattern using Apache Camel | Microservices Design Pattern
Переглядів 4,3 тис.2 роки тому
SAGA Distributed Transactions Pattern using Apache Camel | Microservices Design Pattern
How to provide typeahead support for SpringBoot Configuration properties?
Переглядів 4832 роки тому
How to provide typeahead support for SpringBoot Configuration properties?
How to automate database migration? Database migration using Flyway Tutorial.
Переглядів 8 тис.2 роки тому
How to automate database migration? Database migration using Flyway Tutorial.
How to use Splitter Enterprise Integration Pattern (Split EIP) with Aggregator using Apache Camel?
Переглядів 3,5 тис.2 роки тому
How to use Splitter Enterprise Integration Pattern (Split EIP) with Aggregator using Apache Camel?
How do document Apache Camel Rest Endpoints using OpenApi or Swagger specs?
Переглядів 5 тис.2 роки тому
How do document Apache Camel Rest Endpoints using OpenApi or Swagger specs?
What is Apache Camel Processor and how to use it?
Переглядів 8 тис.2 роки тому
What is Apache Camel Processor and how to use it?
Apache Camel Tutorial for Beginners
Переглядів 22 тис.2 роки тому
Apache Camel Tutorial for Beginners
How to use Spring Cache with Hazelcast?
Переглядів 17 тис.2 роки тому
How to use Spring Cache with Hazelcast?
How to automate Integration Testing for a SpringBoot and Camel application? What is TestContainers?
Переглядів 3,2 тис.2 роки тому
How to automate Integration Testing for a SpringBoot and Camel application? What is TestContainers?
How to use Camel JMS and connect to ActiveMQ?
Переглядів 6 тис.2 роки тому
How to use Camel JMS and connect to ActiveMQ?
How to implement Content based Routing EIP in Apache Camel ?
Переглядів 3,2 тис.2 роки тому
How to implement Content based Routing EIP in Apache Camel ?

КОМЕНТАРІ

  • @alexanderausweger6512
    @alexanderausweger6512 День тому

    Thank you for your insightful presentation :)

  • @priteshkumar1080
    @priteshkumar1080 4 дні тому

    lovely stuff. Please keep making more videos sir. Your way of teaching really thorough and simple. Please continue the good work..

  • @Arahel93
    @Arahel93 5 днів тому

    Does it ever happened to you (or anyone else reading this comment), the necessity to debug inside a route containing a .split() block? Because I'm noticing I am not able in any way to get the debugger of my IntelliJ stop inside a process block which is placed inside that said split block. I am not even able to print a system out or a log and this is really weird because I am certain the code flow leading to an exception is happening in that point... Anyway thank u for the other useful tips

  • @hemantpanchal8067
    @hemantpanchal8067 12 днів тому

    I want to understand below points, 1. Should functional microservice communicate to orchestrator? 2. Should orchestrator microservice communicate to functional microservice? 3. or both the ways? I want to build workflow system, where on form submission (available at stage 1) should start user's workflow journey. But I'm not sure where this initiation will happen.

    • @SagguUK
      @SagguUK 8 днів тому

      In this design pattern, functional microservices are not aware of orchestrator. They just receive requests and act on them. It's the orchestrator's responsibility to control the workflow i.e. talk to various downstream services.

    • @hemantpanchal8067
      @hemantpanchal8067 3 дні тому

      @@SagguUK Ok understood. Thank you :)

    • @hemantpanchal8067
      @hemantpanchal8067 3 дні тому

      @@SagguUK So, my frontend will always call functional microservice endpoint and not orchestrator endpoint? Example, on saving lead form, frontend will call functional microservice which internally will call orchestration endpoint to check if correct stage is called and then it will save data for lead. please help me to understand this.

  • @jasongoossens
    @jasongoossens 13 днів тому

    This playlist is a great help in learning Apache Camel, especially since there aren't that many decent examples online! Thank you!

  • @loyalbaptist4132
    @loyalbaptist4132 14 днів тому

    Thanks a lot for this video.

  • @ramanareddy-q9t
    @ramanareddy-q9t 15 днів тому

    thanks for nice content Saggu

  • @sks4674
    @sks4674 16 днів тому

    Hi can you please upload video for xml route configuration

  • @codecoder005
    @codecoder005 21 день тому

    It's really confusing at the beginning. But you made it really really simple with the example. Good work Thanks you. 🎉❤

  • @yusufislamdemir8806
    @yusufislamdemir8806 23 дні тому

    Thanks for video , it's simple and very good explanation

  • @LuisGomez-ft9pr
    @LuisGomez-ft9pr 23 дні тому

    ur the freaking GOAT my guy

  • @prateekarora367
    @prateekarora367 24 дні тому

    Great Explanation. Thanks for such an informative video.

  • @gunapmk1979
    @gunapmk1979 25 днів тому

    Hi could you explain what is the difference between from and fromF?

    • @SagguUK
      @SagguUK 21 день тому

      This method is used when you want to construct the URI using a formatted string (similar to String.format() in Java). Example: fromF("file:%s?fileName=%s", "inputFolder", "test.txt") .to("log:received");

  • @JVM-ok5eg
    @JVM-ok5eg 28 днів тому

    Can you create more videos on this please

    • @SagguUK
      @SagguUK 21 день тому

      Will try. Thanks

  • @ermanojmeghwal
    @ermanojmeghwal 29 днів тому

    Nice..

  • @javad4282
    @javad4282 Місяць тому

    very good video how to persistent current state in seda on reset camel enging seda continue from last state?

    • @SagguUK
      @SagguUK 21 день тому

      This component does not implement any kind of persistence or recovery if the JVM terminates while messages are yet to be processed. If you need persistence, reliability or distributed SEDA, try using JMS.

  • @manmohanmundhraa3087
    @manmohanmundhraa3087 Місяць тому

    degrading service by reducing instances is also part of this ?

    • @SagguUK
      @SagguUK 21 день тому

      This is fair assumotion and we can consider service degradation when some of the load balanced instances are gone out of service.

  • @test-rj2vl
    @test-rj2vl Місяць тому

    Tnx. Didn't know I can use .process() trick. There is fromEndpoint but looks like fromEndpoint itself no longer has fromEndpoint field? So it route a calls route b and route b calls route c and I use this .process(p -> ... ) in route c, then I am not able to trace back to route a in debugger or am I missing something?

  • @thenet579
    @thenet579 Місяць тому

    Very useful. Thanks bro!

  • @vishnudeo1981
    @vishnudeo1981 Місяць тому

    Hi saggu ..... excellent tutorial.... thoroughly enjoyed it....your teaching style is quite nice....you should make more videos.

  • @rohanyadav7327
    @rohanyadav7327 Місяць тому

    Hi Jasvinder, we are using scheduler to perform health checks on external api - 1) is this a good idea to use scheduler to check if any website is up ? How long it is going to run then ? 2) is there any way we can stop the scheduler. Because our scheduler will be running every 10 secs Please answer. Thanks

    • @SagguUK
      @SagguUK 21 день тому

      Hi, proactively checking the health of an external service using a scheduler is a good practice. In Spring, you can stop schedulers programmatically at runtime if needed. For more details, you can refer to the official Spring scheduler documentation.

    • @rohanyadav7327
      @rohanyadav7327 21 день тому

      @@SagguUK hi ... did schedulers running in background make application slow? I think if it runs infinitely that will be very bad for your application. I don't find running schedulers in background for a health check is a good idea. What is your opinion?

    • @SagguUK
      @SagguUK 21 день тому

      @@rohanyadav7327 Dear Rohan, Schedulers themselves are lightweight threads, so their impact on performance is minimal. In fact, there are always multiple schedulers running in the background, often without us even noticing. The key factor that determines performance is the business logic you've implemented within the scheduler. If that logic is efficient, the scheduler should run smoothly without any issues.

  • @gunapmk1979
    @gunapmk1979 Місяць тому

    Hi Saggu, can we use spring REST instead of camel REST method in springboot camel project?

    • @SagguUK
      @SagguUK 21 день тому

      You can definitely use Spring REST alongside Camel in a Spring Boot project. The choice depends on the complexity of your REST endpoints and how much integration logic is needed. Use Spring REST for simple, straightforward APIs, and Camel REST DSL for more complex routing and integration tasks.

  • @softwareengineer5893
    @softwareengineer5893 Місяць тому

    good teaching and content

  • @ScoobyDoo-ct9nd
    @ScoobyDoo-ct9nd Місяць тому

    it's really great video but i did not see that any config change so how spring boot is connecting to redis without specifying external redis which is running on docker, u need to sepecify url or some configuration right?

    • @SagguUK
      @SagguUK 21 день тому

      It's using default values. You can always override values in the properites file.

  • @Sebastian-zs8cp
    @Sebastian-zs8cp Місяць тому

    hi, is it possible to fulfill with dummy data only on dev and not for prod?

    • @SagguUK
      @SagguUK 21 день тому

      I have not tried but you might be able to use profiles.

    • @Sebastian-zs8cp
      @Sebastian-zs8cp 20 днів тому

      @@SagguUK ok, I need generals v1_.... and the dummy date in spring boot dev profile. It is possible to run general's config and dev parallel

  • @yousfialaa7043
    @yousfialaa7043 Місяць тому

    Thannnnnnnnnnnnnnnnnnnnnnnnnk You

  • @ianwanjala8621
    @ianwanjala8621 Місяць тому

    share github code

  • @dhineshs6210
    @dhineshs6210 Місяць тому

    Excellent

  • @gagyboki799
    @gagyboki799 Місяць тому

    Hi Saggu, I like your videos. Tell me how can we orchestrate execution of multiple RouteBuilders in certain order or let say if one RoutBuilder fails or message is not as expected we jump over some RourBuilders?

    • @SagguUK
      @SagguUK 21 день тому

      You can do something like this: public class FirstRouteBuilder extends RouteBuilder { @Override public void configure() { from("direct:start") .to("direct:route1") .to("direct:route2"); } } public class SecondRouteBuilder extends RouteBuilder { @Override public void configure() { from("direct:route1") .log("Processing in Route 1") .to("direct:route3"); } } public class ThirdRouteBuilder extends RouteBuilder { @Override public void configure() { from("direct:route2") .log("Processing in Route 2") .to("direct:route4"); } } And on top of that you can add exception handling as per your needs.

  • @kirannani4044
    @kirannani4044 Місяць тому

    great video, expecting more videos like this. Thank you so much

  • @user-bb4xt1ku2u
    @user-bb4xt1ku2u 2 місяці тому

    Great information, if possible can you make a route on TCP protocol, like from(tcp:..).to(http:...)

  • @davidfornazier
    @davidfornazier 2 місяці тому

    Im very impressive with the power that JBang gives me to deal with my routes, its mindblowing! Thx Claus and Saggu!

  • @rmkulanthaivelu
    @rmkulanthaivelu 2 місяці тому

    Hi Saggu, I saw many videos which you have explained. It's good. I was working with you in Master Card from Apexon.

  • @weetalic6167
    @weetalic6167 2 місяці тому

    48 C for New Delhi... I cannot even imagine how hot it is

  • @DeepRaj-pj7nn
    @DeepRaj-pj7nn 2 місяці тому

    Hi @Saggu. Nice explanation. You have covered the transactions in a single microservice. How can we achieve this across microservices? Also for InMemorySagaService you did, Could you please elaborate on LRA Saga Service or have some code repo to share. I woudl appreciate your reply on this. Thanks.

  • @Maxim-B
    @Maxim-B 2 місяці тому

    In Camel 4.4. spring-rabbitmq component producer .to(spring-rabbitmq:) will not automatically create queue and binding regarless of autoDeclare settings. Either create it manually in UI or create then in CamelConfiguration

  • @sidjain8651
    @sidjain8651 3 місяці тому

    Great Tutorial

  • @ashwinkumar504
    @ashwinkumar504 3 місяці тому

    Good one keep it up

  • @bCool-sl5cy
    @bCool-sl5cy 3 місяці тому

    Hello Saggu, In the new version of Apache Camel, a very important until here lacking feature has been introduced: variables. But working with an old version: do you agree with me, that the registry may be used to save a variable? Let's suppose that we have a parameteised route:("CTL-ROUTE-%S") which starts an equivalent, equally parameteised, route: ("DATA-ROUTE-%S") In the logs we will get for example: CTL-ROUTE-CUSTOMER: started CTL-ROUTE-ORDER: started DATA-ROUTE-CUSTOMER: disabled DATA-ROUTE-ORDER: disabled and than the CTL-ROUTE-CUSTOMER find out that there is 1200 rows in the table CUSTOMER and therefore starts the equivalent DATA-ROUTE-CUSTOMER The latter route will than poll the 1200 rows from the CUSTOMER table in 100 blocks maps them and send them to a predefined jms-queue. Ist it possible to use here a variable customerBlockNumber with an initial value of 1 and to save it in the registry? This variable will be incremented by each iteration, sothat we can log the following messages: .log("Processing Block-Nr. {}", customerBlockNumber) // this is pseudo-code.

  • @realknowledge-23
    @realknowledge-23 3 місяці тому

    very well explained thanks a lot and all the very best sir.

  • @realknowledge-23
    @realknowledge-23 3 місяці тому

    In very short period of time you explained each and every concept very well thanks a lot sir.

  • @dsdivya
    @dsdivya 3 місяці тому

    in the failed event, again event will be published to same topic or different topic, can you pls clarify.

    • @SagguUK
      @SagguUK 21 день тому

      It totally depends on your business logic. You can publish on the same topic or different one.

  • @AshishThakre-xx6mc
    @AshishThakre-xx6mc 3 місяці тому

    Hi, Can I get your email address Have a few questions, on liquibase.

  • @shahinrajaei1666
    @shahinrajaei1666 3 місяці тому

    awsome thanks alot

  • @venkatramanab7387
    @venkatramanab7387 3 місяці тому

    could you please share the code

    • @SagguUK
      @SagguUK 21 день тому

      github.com/jssaggu/springboot-tutorial

  • @patmac4230
    @patmac4230 3 місяці тому

    This is a great explanation !!!

  • @sensi7593
    @sensi7593 4 місяці тому

    It's pronounced "S'k'eduler" not SHEduler

    • @SagguUK
      @SagguUK 4 місяці тому

      In the US but It’s latter in British English :)

  • @srikarkini8336
    @srikarkini8336 4 місяці тому

    very nicely explained as usual without unnecessary jiggory pockerry!! this is just about sufficient to understand the logic and apply the knowledge in real life coding. Pls keep up the good work. 👍

  • @RavishankarV-l2x
    @RavishankarV-l2x 4 місяці тому

    fantastic sir.

  • @user-mj1ej7vq6b
    @user-mj1ej7vq6b 4 місяці тому

    That was a really good video. Everything was like you need just this video to get things clear...