Yes, or something even more flexible such as
  to("direct-vm:/parent/child")

and for the expression, a simple xpath like:
  from("foo:bar").recipientList(directVm("/parent/*"))
or
  /parent//*

Just a thought though, not sure if that's really needed.

On Sat, Jun 23, 2012 at 9:18 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> On Fri, Jun 22, 2012 at 10:41 PM, Sergey Zhemzhitsky <szh.s...@gmail.com> 
> wrote:
>> Hello Guillaume,
>>
>> I suppose static method to retrieve consumers that can be filtered by a 
>> custom
>> expression will be quite enough.
>>
>
> Yeah that may be a good idea and fairly easy to implement.
>
> The regular direct component could in theory also support this, but I
> guess direct-vm makes the most sense only, as its cross CamelContext
> communication.
>
> The filter expression could also be defined in the uri, if we want to
> consider that, though the foo name would then become a dummy? Or would
> it be to confusing if the name is a filter itself
>
> .to("direct-vm:dummy?filter=someFilterStuffHere")
>
> .to("direct-vm:someFilterStuffHere")
>
>
>
>
>> Regards,
>> Sergey
>>
>>
>>> On Fri, Jun 22, 2012 at 6:33 AM, Sergey Zhemzhitsky <szh.s...@gmail.com> 
>>> wrote:
>>>> Hello, guys,
>>>>
>>>> I agree that if the camel-core could be enhanced to achieve easy 
>>>> cross-context
>>>> communication in the single JVM it would be fine.
>>
>>> Claus committed the direct-vm component recently which is part of 2.10:
>>>    http://camel.apache.org/direct-vm.html
>>
>>>> In that case I would not tire the core to OSGi anyhow to be really 
>>>> environment-independent.
>>>> I suppose that camel context could be published into the JNDI to be 
>>>> retrieved at some time
>>>> lately to discover consuming endpoints. Thus we can achieve the similar 
>>>> behavior in different
>>>> environments and
>>>>
>>>> from("foo:bar").recipientList(osgiServices("myldapfilter"))
>>>>
>>>> would become
>>>>
>>>> from("foo:bar").recipientList(vm("myfilter"))
>>>>
>>
>>> Atm, the direct-vm queues are not really accessible afaik, so we may
>>> need to enhance the direct-vm slightly to allow retrieving the set of
>>> registered consumers (adding a static getRegisteredConsumers on the
>>> component should be sufficient).  Those are mapped by the path
>>> component of the consumer uris, so it already provides some kinda of
>>> tree based structure.  If that's sufficient, we would just need a
>>> simple expression that would filter them based on some regular
>>> expression maybe.
>>
>>>>
>>>> Regards,
>>>> Sergey
>>>>
>>>>
>>>>
>>>>> Agree, I think that enhancing the existing could achieve this.
>>>>
>>>>> Regards
>>>>> JB
>>>>
>>>>> On 06/21/2012 08:51 AM, Guillaume Nodet wrote:
>>>>>> That's really my main goal.  If we fit into what already exists more,
>>>>>> we'll be able to better leverage everything.
>>>>>>
>>>>>> On Thu, Jun 21, 2012 at 8:48 AM, Christian Schneider
>>>>>> <ch...@die-schneider.net>  wrote:
>>>>>>> +1
>>>>>>>
>>>>>>> I like that aproach. It would make the OSGi services component a lot
>>>>>>> simpler.
>>>>>>>
>>>>>>>
>>>>>>> from("foo:bar").recipientList(osgiServices("myldapfilter"))
>>>>>>>
>>>>>>> I guess we can use a similar aproach to achieve load balancing. Not 
>>>>>>> sure if
>>>>>>> the example below already would work but I am sure we could make it work
>>>>>>> this way or similar:
>>>>>>>
>>>>>>> from("foo:bar").loadbalance().roundRobin().recepientList(osgiServices("myldapfilter"))
>>>>>>>
>>>>>>>
>>>>>>> Christian
>>>>>>>
>>>>>>> Am 21.06.2012 08:27, schrieb Guillaume Nodet:
>>>>>>>
>>>>>>>> Yeah, and I agree leveraging OSGi services for that is a good idea.
>>>>>>>> That's not really what I'm concerned about.
>>>>>>>>
>>>>>>>> The goal is to have a way to multicast a message to a set of endpoint
>>>>>>>> which will be discovered at runtime, and that's not really OSGi
>>>>>>>> specific (though the fact that OSGi has a service registry make that
>>>>>>>> use case very relevant).
>>>>>>>> I'd like to reuse what camel-core provides for that instead of going
>>>>>>>> around and implementing a brand new component.
>>>>>>>> The dynamic recipient list works with an Expression which returns a
>>>>>>>> list of endpoints (either Endpoint or string uris), so why not writing
>>>>>>>> such an expression ?  This expression could easily use a
>>>>>>>> ServiceTracker internally to track changes on services and the
>>>>>>>> expression itself could be an osgi filter...
>>>>>>>>
>>>>>>>>    from("foo:bar").recipientList(osgiServices("myldapfilter"))
>>>>>>>>
>>>>>>>> We could even maybe make use of the CamelContext internal registry
>>>>>>>> which can do some type of discovery (though the osgi implementation is
>>>>>>>> lacking a lot of stuff).
>>>>>>>> A simple one would at least be some kind of regular expression that
>>>>>>>> would match some endpoints.  We may need something slightly more
>>>>>>>> specific for vm:// and direct-vm:// which can be used for
>>>>>>>> cross-camelContext exchanges.
>>>>>>>>
>>>>>>>> And sorry if I seem a bit reluctant, I'm just trying to make things
>>>>>>>> fit more cleanly in camel, and improve camel core where it needs
>>>>>>>> rather than implementing a new component.  It just seems that your
>>>>>>>> requirements are not really osgi specific and could be made slightly
>>>>>>>> mode generic.
>>>>>>>>
>>>>>>>> On Thu, Jun 21, 2012 at 7:41 AM, Sergey Zhemzhitsky<szh.s...@gmail.com>
>>>>>>>>   wrote:
>>>>>>>>>
>>>>>>>>> Hi Guillaume,
>>>>>>>>>
>>>>>>>>> Of course if there is more convenient way to communicate between
>>>>>>>>> bundles there is no need in the component. On the moment of 
>>>>>>>>> development
>>>>>>>>> of this component there were multiple ways to do that, for instance:
>>>>>>>>>
>>>>>>>>> 1. jms component which is rather heavyweight to do inter-bundle
>>>>>>>>> communication in the same jvm.
>>>>>>>>> 2. vm component which is asynchronous and does not support 
>>>>>>>>> transactions
>>>>>>>>> 3. nmr component which can be used in synchronous mode, but does not
>>>>>>>>> support pub-sub, although it
>>>>>>>>>    does not prevent user from registering multiple consuming endpoints
>>>>>>>>> with the same name, so the
>>>>>>>>>    messages are sent only to the first registered nmr-consumer.
>>>>>>>>>
>>>>>>>>> The new direct-vm component solves the issue with transactions (like
>>>>>>>>> synchronous nmr does) but it does not
>>>>>>>>> support pub-sub too.
>>>>>>>>>
>>>>>>>>> To use a dynamic recipient list it's necessary to have some kind of
>>>>>>>>> custom code that will resolve
>>>>>>>>> addresses of recipients at runtime. In such a case syncronous nmr can 
>>>>>>>>> be
>>>>>>>>> used as well. The benefit of
>>>>>>>>> OSGi services is that this is a standard functionality of OSGi runtime
>>>>>>>>> and even OSGi api predisposed
>>>>>>>>> to work with an array of them. Furthermore you will get all the 
>>>>>>>>> benefits
>>>>>>>>> of OSGi services, i.e.
>>>>>>>>> dynamism, priorities, etc.
>>>>>>>>>
>>>>>>>>> It would be nice if direct-vm allowed to configure pub-sub with all 
>>>>>>>>> the
>>>>>>>>> options of multicast processor.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Sergey
>>>>>>>>>
>>>>>>>>>> I'm a bit skeptic about this component.
>>>>>>>>>> It seems at first glance that if conflates a few things like osgi
>>>>>>>>>> service access, multicast, etc...
>>>>>>>>>> If the goal is to do inter-bundle communication, the new component
>>>>>>>>>> coming from CAMEL-5370 should already do that and I don't really see
>>>>>>>>>> the need for the component.
>>>>>>>>>> For the multicast, using a dynamic recipient list coupled with
>>>>>>>>>> direct-vm should work.
>>>>>>>>>> On Tue, May 22, 2012 at 7:57 PM,<szh.s...@gmail.com>    wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi gurus,
>>>>>>>>>>>
>>>>>>>>>>> Recently  I've  published  camel  component that uses OSGi services 
>>>>>>>>>>> to
>>>>>>>>>>> communicate between endpoints in different bundles.
>>>>>>>>>>>
>>>>>>>>>>> Here is the link: https://github.com/szhem/camel-osgi
>>>>>>>>>>> I've already raised JIRA issue -
>>>>>>>>>>> https://issues.apache.org/jira/browse/CAMEL-5292
>>>>>>>>>>>
>>>>>>>>>>> So I'd like to have some feedback if it seems to be useful.
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>> Sergey
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Christian Schneider
>>>>>>> http://www.liquid-reality.de
>>>>>>>
>>>>>>> Open Source Architect
>>>>>>> Talend Application Integration Division http://www.talend.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen



-- 
------------------------
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
FuseSource, Integration everywhere
http://fusesource.com

Reply via email to