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 E150EEAFB for ; Tue, 19 Feb 2013 00:21:32 +0000 (UTC) Received: (qmail 24008 invoked by uid 500); 19 Feb 2013 00:21:32 -0000 Delivered-To: apmail-camel-dev-archive@camel.apache.org Received: (qmail 23962 invoked by uid 500); 19 Feb 2013 00:21:32 -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 23936 invoked by uid 99); 19 Feb 2013 00:21:31 -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 00:21:31 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of raul@evosent.com designates 209.85.210.182 as permitted sender) Received: from [209.85.210.182] (HELO mail-ia0-f182.google.com) (209.85.210.182) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Feb 2013 00:21:26 +0000 Received: by mail-ia0-f182.google.com with SMTP id w33so5606893iag.13 for ; Mon, 18 Feb 2013 16:21:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:mime-version:date:message-id:subject:to :content-type:x-gm-message-state; bh=aED0NIv63StflIgh0Q9D3ivyQIjndwjGLVMrotnd4V4=; b=K79VLECkY7r0sAqr1oC6CzSBzj70iK2ksb/YryzreyrlzH18aj9fGM/7TwG/840D/s UJIul7fqtv5L90+WlZ+oMwGm0+BMXJCvbae2bT/Lw4fz23tmJHUXGwq1gNtfFsh9JCB5 x3EwgTZ+zex6Ari2r0tCmT9kf31bkB26nSjKFRns0lWDUYSG6X18KHCNyXD4dOqogvN1 eAMKAhrKg/fhTNygqPB+kRXYTiItPpRloE24N2yGWEY/W4oQtLs3HzNRTI1yFWR292Si qdLsPChC3QpBBAZW6p1ABCJmjLRYN/W2mzOIgYp4nYv/SJ5841z3epuj0T4NZLyorDg/ HWyQ== X-Received: by 10.50.108.235 with SMTP id hn11mr7196296igb.107.1361233265498; Mon, 18 Feb 2013 16:21:05 -0800 (PST) From: Raul Kripalani Mime-Version: 1.0 (1.0) Date: Tue, 19 Feb 2013 00:21:03 +0000 Message-ID: <-5191488065940407854@unknownmsgid> Subject: [DISCUSS] Camel 3.0 - Core of the routing engine To: "dev@camel.apache.org" Content-Type: multipart/alternative; boundary=f46d0402aeef3f187104d608d15d X-Gm-Message-State: ALoCoQnpnvc4MxcYjCn7OnkGaYjEkr1crh86JJOjqy5DWqz/xdYMZhGTaJpCvP2NTD8/U3BGvBFV X-Virus-Checked: Checked by ClamAV on apache.org --f46d0402aeef3f187104d608d15d Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 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=FAl. --f46d0402aeef3f187104d608d15d--