Return-Path: X-Original-To: apmail-camel-dev-archive@www.apache.org Delivered-To: apmail-camel-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BFDC2E316 for ; Tue, 19 Feb 2013 07:20:41 +0000 (UTC) Received: (qmail 99854 invoked by uid 500); 19 Feb 2013 07:20:41 -0000 Delivered-To: apmail-camel-dev-archive@camel.apache.org Received: (qmail 99688 invoked by uid 500); 19 Feb 2013 07:20:40 -0000 Mailing-List: contact dev-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list dev@camel.apache.org Received: (qmail 99660 invoked by uid 99); 19 Feb 2013 07:20:39 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Feb 2013 07:20:39 +0000 X-ASF-Spam-Status: No, hits=-0.5 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of cschneider111@gmail.com designates 74.125.83.50 as permitted sender) Received: from [74.125.83.50] (HELO mail-ee0-f50.google.com) (74.125.83.50) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Feb 2013 07:20:33 +0000 Received: by mail-ee0-f50.google.com with SMTP id e51so3434583eek.37 for ; Mon, 18 Feb 2013 23:20:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:sender:message-id:date:from:user-agent:mime-version:to :subject:references:in-reply-to:content-type :content-transfer-encoding; bh=ubeS0LlDfRuoXNM2y22DZ9xEOfk1qJPp9e2p4zGF030=; b=TCM3t5M2UjBpenRGb0PUlQxV8GoqxWoYWwVSC7AFYVk25P7JYcSCFnpAyugXi0XJkw Qex+/7502qt9sBNel2PrihiqAY52+qa0sEW9hFQ/vlgT/cIUDfOhaQesdNuBEEmpytrI YiLWAtHJOaxggqUECyIbXb1t1M1BYmbflq7ZGVvhi0NbdLfxN9v6SMs5NOSb8ABJYhyC G2ikzBnuiAfgKqrR1Fdmv+tFUTkfCOEzXxyWwwfzIov8TSll7LGn8nZx/+M/Xd0fro+Z jRXvjlU9Mr0XHhq2mzFgmgocjhJvWuAqgwAjIKFrt1PQB0QZ+l8xaQLWx9/JAskIpP1W As7g== X-Received: by 10.14.182.71 with SMTP id n47mr54048066eem.11.1361258411693; Mon, 18 Feb 2013 23:20:11 -0800 (PST) Received: from [192.168.90.68] (port-87-193-169-63.static.qsc.de. [87.193.169.63]) by mx.google.com with ESMTPS id t4sm102352744eel.0.2013.02.18.23.20.09 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 18 Feb 2013 23:20:10 -0800 (PST) Sender: Christian Schneider Message-ID: <512327A8.6040703@die-schneider.net> Date: Tue, 19 Feb 2013 08:20:08 +0100 From: Christian Schneider User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 MIME-Version: 1.0 To: dev@camel.apache.org Subject: Re: [DISCUSS] Camel 3.0 - Core of the routing engine References: <-5191488065940407854@unknownmsgid> In-Reply-To: <-5191488065940407854@unknownmsgid> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Checked: Checked by ClamAV on apache.org +1 I think one of the main things camel is missing is a routing engine. Like you wrote, currently each processor calls the next. Aspects like asynchronous behaviour, transaction and security are also implemented as processors. I think what we need is a runtime model of a camel route that represents the route without aspects. The aspects should then be executed by the routing engine without blowing up this model. This change is pretty severe though. I am not sure if we can refactor the camel core and keep it even somewhat compatible. I also fear that once we start these changes there is no way back and we might risk having an instable branch for a long time. So we have to reduce this risk in some way. Christian On 19.02.2013 01:21, Raul Kripalani wrote: > Hello team, > > We use a recursive model in our routing engine to chain processors with one > another to process exchanges. > > This results in lengthy stacktraces and increased memory usage due to local > variable retention for longer than strictly needed, IMHO. This recent > question on Stack Overflow is a typical (short!) stacktrace: > http://stackoverflow.com/questions/14734983/camel-ftp-intermittent-issue. > Debugging > it can be daunting for users. > > Moreover many infrastructural Processors are woven implicitly along the > processor chain. Maybe this logic should belong elsewhere (the routing core > itself?). > > Now that the Camel routing model is consolidated, can we start thinking > about moving towards an iterative routing approach? I feel the recursive > approach worked wonders when Camel was still a baby and the architecture > was heavily evolving: basically any processor, at any point, could do > anything to the exchange. And everything was a processor. Flexible and > versatile! > > But now that the concepts are well rooted, I feel we need to formally > define "the routing process", rather than leaving it all up to processors > to be assembled in the right order. > > I realize my proposal may sound somewhat abstract at this point, but before > going to further length, I want to gauge if my concern is shared. > > What do you think? > > Ra�l. > -- Christian Schneider http://www.liquid-reality.de Open Source Architect http://www.talend.com