Time is the best teacher. :)

I've found a way to do a processing message after activity receives it - with 
interceptors. There some exceptions, but both persistence and processing works.

Solutions looks next:
interceptFrom("activemq:incoming")
    .split(body())
        .multicast()
            .to(sys1.getEndpoint())
            .to(sys2.getEndpoint())
        .end()
     .end();


Łukasz Dywicki
--
Code-House
http://code-house.org



Wiadomość napisana przez Łukasz Dywicki w dniu 2012-01-11, o godz. 11:48:

> Hey Hadrian,
> I started investigating the camel-bam code and one from statements I wrote is 
> not true. The Process name can be set by calling the ProcessBuilder 
> constructor. The Process-N name is a default behaviour.
> 
> Also, if it makes a sense to support delaying the activity? Eg making an 
> activity suspended? I don't see use of it in my case so far, but that's might 
> be required by other processes.
> 
> Łukasz Dywicki
> --
> Code-House
> http://code-house.org
> 
> 
> Wiadomość napisana przez Hadrian Zbarcea w dniu 2012-01-11, o godz. 03:29:
> 
>> Lukasz, do you mind opening a jira with your findings?
>> Thanks, Hadrian
>> 
>> On 01/10/2012 06:36 PM, Łukasz Dywicki wrote:
>>> Hey everyone,
>>> I tried yo use camel-bam and it works for very basic example shown in 
>>> documentation. It works well for correlating the files without any middle 
>>> processing steps.
>>> 
>>> The process I try to monitor looks following
>>> 
>>> - receive incoming JMS message - split - multicast (queue1, queue2)
>>> 
>>> So I've build a following configuration for the process:
>>> ValueBuilder correlation = header("JMSCorrelationID");
>>> ActivityBuilder incoming = 
>>> activity("activemq:incoming").correlate(correlation).name("incoming");
>>> 
>>> ActivityBuilder sys1 = 
>>> activity("amq2:queue1").correlate(correlation).name("system1");
>>> ActivityBuilder sys2 = 
>>> activity("amq2:queue2").correlate(correlation).name("system2");
>>> 
>>> sys1.starts().after(incoming.starts());
>>> sys2.starts().after(incoming.starts());
>>> 
>>> But after receiving messages and initializing a process instance nothing 
>>> happens. Er it happens, the activity is created. I can not reuse a 
>>> incoming.getEndpoint to create an from statement and process message. 
>>> Multiple consumers on same destination are not allowed.
>>> 
>>> Issues I've discovered:
>>> - Lack of support for parallel activities.
>>> - No support for processing received message. Usually a incoming message is 
>>> only a entry point for a process.
>>> - No support for a custom process names. Not everyone are happy with 
>>> Proces-N name. A ProcessBuilder extensions can't change a naming schema.
>>> - Activity definition is not put into the database as long as it is not 
>>> called by flow. Process is created and the activities are known, but 
>>> they're not persisted before processing. So whole definitions are useless 
>>> if we would like display process definitions somewhere else.
>>> - Hard coded dependency to JPA, can't be replaced by alternative way of 
>>> storing process definitions eg like in IdempotentRepository.
>>> 
>>> These issues makes a camel-bam useless in my case. Should I use an 
>>> alternative tool like activiti-camel integration? It's fine but I don't 
>>> need whole BPMN, diagraming. I want to track a flow between systems in an 
>>> easy way, there is no human tasks, only service calls and camel logic.
>>> 
>>> Łukasz Dywicki
>>> --
>>> Code-House
>>> Krasiczyńska 3/80
>>> 03-379 Warszawa
>>> 
>>> 
>>> 
>> 
>> -- 
>> Hadrian Zbarcea
>> Principal Software Architect
>> Talend, Inc
>> http://coders.talend.com/
>> http://camelbot.blogspot.com/
> 

Reply via email to