You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Ben O'Day (JIRA)" <ji...@apache.org> on 2011/08/31 02:23:09 UTC

[jira] [Created] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

add route support for Hazelcast distributed locking/unlocking
-------------------------------------------------------------

                 Key: CAMEL-4397
                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
             Project: Camel
          Issue Type: Improvement
          Components: camel-hazelcast
            Reporter: Ben O'Day
            Assignee: Ben O'Day
            Priority: Minor
             Fix For: 2.9.0


add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

from("direct:processLocked")
  .doTry()
    .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
    .bean(MyProcess.class);
  .doFinally()
    .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"))
    .to("hazelcast:unlock");


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Ben O'Day (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ben O'Day updated CAMEL-4397:
-----------------------------

    Description: 
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

{code}
from("direct:processLocked")
  .doTry()
    .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
    .bean(MyProcess.class);
  .doFinally()
    .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"));
{code}

  was:
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

from("direct:processLocked")
  .doTry()
    .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
    .bean(MyProcess.class);
  .doFinally()
    .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"))
    .to("hazelcast:unlock");



> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("direct:processLocked")
>   .doTry()
>     .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
>     .bean(MyProcess.class);
>   .doFinally()
>     .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"));
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Hadrian Zbarcea (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13098503#comment-13098503 ] 

Hadrian Zbarcea commented on CAMEL-4397:
----------------------------------------

@Ben, see my comment on the dev@. Btw, I don't think this is a minor improvement.

> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109597#comment-13109597 ] 

Claus Ibsen commented on CAMEL-4397:
------------------------------------

Sergey sounds good. And possible make it possible for end users to provide a 3rd option, some may want to look at load on servers, and allow the server with the lowest load to favor the lock. And whatnot. But that is just a wish. Having 1 and 2 is good.

> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Ben O'Day (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ben O'Day updated CAMEL-4397:
-----------------------------

    Attachment: CAMEL-4397.patch

Attached is a rough patch that I'd like some feedback on.  In particular, the use of a static ThreadLocal variable in the Producer to store/retrieve the reference to java.util.concurrent.locks.Lock.  This seems to work (in my simple tests), but I have my doubts about how this will stand up in the more complex routes/containers (OSGi, etc).  

Is there an alternate approach that I should be using to ensure that the unlock is called from same thread that created the Lock?  thanks...

> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("direct:processLocked")
>   .doTry()
>     .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
>     .bean(MyProcess.class)
>   .doFinally()
>     .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"));
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Issue Comment Edited] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Sergey Zhemzhitsky (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109460#comment-13109460 ] 

Sergey Zhemzhitsky edited comment on CAMEL-4397 at 9/21/11 1:29 PM:
--------------------------------------------------------------------

Hi guys,

What do you think about org.apache.camel.spi.RoutePolicy implementation that uses hazelcast to support distributed locking/unloking? 

Such a route policy will force the route to run only on a single node in the cluster. Moreover there can be two route policies: 
# the first one will create a distributed lock on every incoming exchange and will release the lock when exchange processing completes. This policy will allow to process exchange only on a single node of the cluster at a given time. When exchange processing completes the second node in the cluster will be able to obtain a lock.
# the second route policy will create a distributed lock on route startup, and will release the lock on route shutdown, so the route will run only on a single node in the cluster all the time.


      was (Author: szhemzhitsky):
    Hi guys,

What do you think about org.apache.camel.spi.RoutePolicy implementation that uses hazelcast to support distributed locking/unloking? 

Such a route policy will force the route to run only on a single node in the cluster.

  
> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Ben O'Day (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ben O'Day updated CAMEL-4397:
-----------------------------

         Priority: Major  (was: Minor)
    Fix Version/s:     (was: 2.9.0)
                   2.10

I'd like to revisit this and either move forward (in 2.10) or close it.  From my perspective, I still see a use case and my patch (with a bit of cleanup) appears to address it w/o conflicting with related issues (CAMEL-4454, etc).  Either way, if you feel strongly about this one way or another, let me know...thanks
                
> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>             Fix For: 2.10
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}
> see this discussion...http://camel.465427.n5.nabble.com/discuss-implementing-Locks-in-Camel-td4775904.html

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Ben O'Day (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ben O'Day updated CAMEL-4397:
-----------------------------

    Description: 
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

{code}
from("direct:processLocked")
  .doTry()
    .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
    .bean(MyProcess.class)
  .doFinally()
    .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"));
{code}

  was:
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

{code}
from("direct:processLocked")
  .doTry()
    .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
    .bean(MyProcess.class);
  .doFinally()
    .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"));
{code}


> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("direct:processLocked")
>   .doTry()
>     .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
>     .bean(MyProcess.class)
>   .doFinally()
>     .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"));
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Ben O'Day (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109638#comment-13109638 ] 

Ben O'Day commented on CAMEL-4397:
----------------------------------

hey Sergey, what you described is CAMEL-4454...using a RoutePolicy/Hazelcast seems to make the most sense there.  

My use case is slightly different.  We have data (Orders, etc) that is modified in multiple routes and also by POJOs in other apps.  I was hoping to leverage Hazelcast to manage the distributed Lock on this data (to prevent stale read/writes, etc) regardless of where the Lock was created.  So, my approach was to create the Lock on specific Exchange data (OrderID) based on an Expression.  Also, I don't want to stop the route consumer altogether, but only block the threads processing specific data (based on OrderID) to allow the route to continue processing other data (other Orders) to preserve processing throughput.  

That being said, perhaps this should be done with a RoutePolicy (or is overambitious altogether).  I was just trying to leverage the existing camel-hazelcast component since it seemed to fit there...I'll give it some more thought.



> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Sergey Zhemzhitsky (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109460#comment-13109460 ] 

Sergey Zhemzhitsky commented on CAMEL-4397:
-------------------------------------------

Hi guys,

What do you think about org.apache.camel.spi.RoutePolicy implementation that uses hazelcast to support distributed locking/unloking? 

Such a route policy will force the route to run only on a single node in the cluster.


> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Ben O'Day (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ben O'Day updated CAMEL-4397:
-----------------------------

    Description: 
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

{code}
from("seda:lockTest")
  .doTry()
    .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
    .to("hazelcast:lock")
    .setBody(simple("processed[${body}]"))
    .to("mock:mock")
  .doFinally()
    .to("hazelcast:unlock");
{code}

see this discussion...http://camel.465427.n5.nabble.com/discuss-implementing-Locks-in-Camel-td4775904.html

  was:
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

{code}
from("seda:lockTest")
  .doTry()
    .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
    .to("hazelcast:lock")
    .setBody(simple("processed[${body}]"))
    .to("mock:mock")
  .doFinally()
    .to("hazelcast:unlock");
{code}


> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}
> see this discussion...http://camel.465427.n5.nabble.com/discuss-implementing-Locks-in-Camel-td4775904.html

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CAMEL-4397) add route support for Hazelcast distributed locking/unlocking

Posted by "Ben O'Day (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAMEL-4397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ben O'Day updated CAMEL-4397:
-----------------------------

    Description: 
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

{code}
from("seda:lockTest")
  .doTry()
    .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
    .to("hazelcast:lock")
    .setBody(simple("processed[${body}]"))
    .to("mock:mock")
  .doFinally()
    .to("hazelcast:unlock");
{code}

  was:
add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock

something like this...

{code}
from("direct:processLocked")
  .doTry()
    .toF("hazelcast:%s%s", HazelcastConstants.LOCK_PREFIX, simple("${header.id}"))
    .bean(MyProcess.class)
  .doFinally()
    .toF("hazelcast:%s%s", HazelcastConstants.UNLOCK_PREFIX, simple("${header.id}"));
{code}


> add route support for Hazelcast distributed locking/unlocking
> -------------------------------------------------------------
>
>                 Key: CAMEL-4397
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4397
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-hazelcast
>            Reporter: Ben O'Day
>            Assignee: Ben O'Day
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: CAMEL-4397.patch
>
>
> add support for Hazelcast distributed locking/unlocking APIs in a route...see http://www.hazelcast.com/documentation.jsp#Lock
> something like this...
> {code}
> from("seda:lockTest")
>   .doTry()
>     .setHeader(HazelcastConstants.LOCK_OBJECT, simple("ID-${header.id}"))
>     .to("hazelcast:lock")
>     .setBody(simple("processed[${body}]"))
>     .to("mock:mock")
>   .doFinally()
>     .to("hazelcast:unlock");
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira