Apache Camel ESB for C # and Java EDA

We are exploring the integration of some of our coarse-grained business services using an event-driven architecture (EDA) and the server side of these services (REST), implemented in both Java and .NET (C #). Initially, we intended to use RabbitMQ (and the AMQP protocol) as a neutral and open tool (with good client support in these two languages), but this means the need to support a different runtime (Erlang) along with Java and CLR. We are also considering Apache qPid because it has an AMQP Java intermediary implementation that can fix this problem.

Does anyone have any experience using the richer Apache Camel ESB on top of ActiveMQ to integrate Java and .NET services in the Pub-Sub EDA manner? Have I missed any other possible suggestions regarding the route through it?

thanks

+4
source share
4 answers

If all you are looking for is a messaging platform to support EDA, then Camel is not strictly necessary. Camel is a platform for translating between different formats of useful data, routing between web services, messaging, RSS feeds and 160 others .

From your question above, ActiveMQ should be able to handle the used case, which you describe out of the box.

From a client perspective, ActiveMQ supports the library as Java (JMS - ) and C ++ / C # ( CMS / NMS is almost an exact copy of JMS). Other languages ​​(Ruby, Python, Javascript, etc.) are supported through ( largely also the standard ) STOMP .

I worked with ActiveMQ in a mixed .Net / Java environment and it does exactly what it says about the gesture. All in a good Java runtime that can be used with your favorite monitoring tools through JMX.

+1
source

One of the options for using the ESB that Camel really shines on is Routing. As far as I know, there is no .NET port for the camel routing engine. Thus, you cannot use the Camel routing features on the .NET side. However, the camel supports various exchange formats, such as json, xml and pojos. You must be able to interact between Java and .NET using xml or json as the interchange format.

0
source

I created a java endpoint adapter for my .net application. The .net application publishes an xml or json message for the camel endpoint, the TibcoEMS theme in my case. All routing / filtering / enrichment / ... processing is done inside the camel. The exchange is then placed at another endpoint that will be retrieved by the java application.

0
source

Should work fine! ActiveMQ is a Java application, but there is a good working .NET API for it. It should do most of your pub / sub needs. If you need more logic in the middle, for example, routing, in fact, ActiveMQ comes with Camel, so you can do routing, transformations, transformations, etc. Right in the ActiveMQ instance, setting up some XML (or Java / Scala code).

There is no need to process Camel with .NET directly, as communication must be done through ActiveMQ anyway. The ActiveMQ / Camel combination is really effective for such tasks - and it is free.

0
source

Source: https://habr.com/ru/post/1310727/


All Articles