Camunda Message Correlation with multiple engines on other PC

Hello guys,

I am struggling with some problem regarding Camunda Message Correlation.
I saw the video from BPMN Messaging on Youtube, but i am wondering if there is a way to setup 2 processes. Process A runs on the process engine on PC A, and Process B runs on the engine B on PC B. Process A uses a send task to send some message to a receive task on Process B which is located on another IP address but in the same network.

I managed to run a Process on PC A and send a command with postmen from PC B to start the process. That is no problem.
Command like this:
On side A: localhost:8080/engine-rest/process-definition/key/Process_1kaxj2c/start
On side B: 192.168.1.111:8080/engine-rest/process-definition/key/Process_1kaxj2c/start

How can I setup such a scenario.

That shouldn’t be a problem, you just need to use the send message rest call and make sure you’re pointing to the other engine’s Rest end point.

Thanks for answering so fast. Yes i thought thats the way, but i did not managed to get it done. Can you give me a deeper insight pls? The best would be an example.

It’s pretty straight forward.
the endpoint is 192.168.1.111:8080/engine-rest and the call is linked in my post above.
If you have any particular problem problem or error occurring when you try it, let me know.

Ok thank you. I will try to find it out. But where do i configure the endpoints? I did not find any related method in the docs.
Can i add the endpoint IP to the specific message in the java class?

With postman it is pretty straight forward, yes. Simply use the link: ‘localhost:8080/engine-rest/message’ or ‘192.168.1.111:8080/engine-rest/message’. But that’s trivial. What i want to achieve is not to use postman. I want that the java class with the execution method handles the message sending on a different IP.

When i deploy process A which has a send task with a java class (delegation) attached which correlates a message named ‘overhanding2’ i get the error ‘Cannot correlate message ‘overhanding2’: No process definition or execution matches the parameters’. As expected because ‘overhanding2’ is defined in the receive task in process B running on engine B on another IP. But not on process A, engine A. How can i connect this?

Hi @SebastianAT,

here is a complete example using two different engines with spring boot applications.

Hope this helps, Ingo

Hello @Ingo_Richtsmeier
Sry where is the link? u forgot to attach the link to a word?
Greets

Hi @SebastianAT,

sorry for this. Here is the Link: https://github.com/camunda-consulting/messaging-example

Hope this helps, Ingo

1 Like

Many thanks :slight_smile:
I will inspect that project and come back if i have problems.

Unfortunately I am facing a build failure causing from a plugin. Error msg: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on project customer: Tests in error:
** IntegrationTest.testHappyPath » IllegalState Failed to load ApplicationContext**
** InMemoryH2Test.com.camunda.consulting.customer.unit.InMemoryH2Test » NoClassDefFound**

Is there also a way without using spring framework?

com.camunda.consulting.customer.integration.IntegrationTest.txt (1.4 KB)
com.camunda.consulting.customer.unit.InMemoryH2Test.txt (593 Bytes)

solved by adding this to pom.xml

javax.xml.bind
jaxb-api
2.3.0

Ok the project shows how you can send messages between pools. But my problem is that i have 2 separated processes and they communicate with send and receive tasks.

Do you think you can setup a project like this in the youtube video with AskTDog. And the asktDog process is located on another PC on another Engine? This would be fantastic.

Hi @SebastianAT,

we did some simplifications here, which can easily be extended.

You can separate the processes into two different diagrams. Just copy the file and delete the superflous pool from each copy.

The rest endpoint where the message is send to can be adopted here: https://github.com/camunda-consulting/messaging-example/blob/master/customer/src/main/java/com/camunda/consulting/customer/SendMessageRest.java#L21-L35.

The code is built to work in the docker-compose included in the example. Feel free to extend it to your needs and set the hostname to something else.

Hope this helps, Ingo

1 Like

Hi @SebastianAT,

thank you for this hint. I found some uncommited changes on my computer with the missing dependencies. I’ve pushed them right now.

Cheers, Ingo

1 Like

Hey Ingo,

Thank you very much for your hint!
Your’r right.
Finally I managed to get it done.

Kind regards Sebastian