Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Differences between Camel and BPEL

The SOA concept is easy to grasp, but I am not familiar at all with enterprise service integation architectures and technologies like BPEL and Apache Camel.

I know that BPEL helps orchestrating services, and that Camel is an implementation of Enterprise Integration Patterns. I am currently reading the well known Enterprise Integration Patterns book.

But the border between EIP and orchestration seems very thin for me. In my mind, Camel also orchestrates services in its own way. Moreover, Camel provides lots of connectors so different protocols can be easily used.

Is Camel better than BPEL?
Or is it possible to do things with BPEL that you cannot do with Camel?
Which ones?
About what I read, it seems Camel is better than BPEL to orchestrate REST services: is it true?

like image 601
Vincent Hiribarren Avatar asked Apr 26 '12 09:04

Vincent Hiribarren


People also ask

What's the difference between Apache Camel and Kafka?

Kafka for event streaming and Camel for ETLCamel is used in a business domain for application integration. Kafka is the central nervous system between the Camel integration application and many other applications.

When to use Camel?

Integrating applications together: Camel is intended for situations where you need to move data between different protocols and applications (like files, emails, APIs or web apps). You can use Apache Camel when you want to move data between any one of the apps and protocols supported by its 200+ components.

What is Apache Camel?

Apache Camel ™ is a versatile open-source integration framework based on known Enterprise Integration Patterns. Camel empowers you to define routing and mediation rules in a variety of domain-specific languages (DSL, such as Java, XML, Groovy, Kotlin, and YAML).


2 Answers

We have been trying to answer this question many many times in my previous job. Our products were TIBCO BusinessWorks (something like Apache Camel) and TIBCO iProcess (something like Apache ServiceMix).

And we came to simple conclusion:

  • If your process is long-term (you usually need to suspend and wait until approve from manager) you want BPEL.
  • If your processes are more short-term and no people are involved, you want integration (Camel).

This not always applicable and these two worlds do not have strong boundaries, but you can simplify that. And one more note - you can do BPEL-like processes with integration products and vice versa. It's just a matter of approach. But if you stick with these rules, you should be able to differentiate between the two. There are many more aspects, but this is I think the most important one.

like image 164
lzap Avatar answered Oct 26 '22 14:10

lzap


Bpel is more of a language/standard for bpm and service orchestration implementations. Its a bit like apple and pears, since camel is an integration engine implementation. You probably want to look more at bpel (or bpmn) for high level business automation (like inplement a purchase flow with multiple systems, long running processes, and business logic). In Camel, you typically handle more technical aspects such as routing and wire protocol conversion. Typically in a rather stateless fashion.

Of course, there is something in between - such as routing between homogenous protocols where any solution would do. Such as your rest example. Also note that Camel can be run together with Orchestration engiens such as activti and apache ode.

like image 33
Petter Nordlander Avatar answered Oct 26 '22 15:10

Petter Nordlander