I put the anther thread topic about the RocketMQ filter PR into this one, Let us to resolve it together.
Thanks Eric, we will review it as far as possible :-) > Hi, > > I have already create a PR( > https://github.com/apache/incubator-rocketmq/pull/82) , to support message > filtering based on SQL92, just as previous email noted. > > Maybe the solution is not the best one, and also the code may have mistake. > > I expect members could check the solution and review the code. > > > Thanks, > Eric > I have already implemented a draft edition to support filter message.The > module of SQL92 grammar is extracted from ActiveMQ with only some grammars, > such as > > 1. numeric comparison, like >, >=, <,<=, BETWEEN > 2. character comparison, like =, <>, IN > 3. check NULL > 4. logical AND, logical OR, logical NOT > > And optimize some code, e.g. number threshold check, types check, and etc. > > Others, such as Function, XPath is not integrated. > > I have also consider about other language may be added later, the module is > an independent jar and is nothing to do with RocketMQ. Other language > labeled 'some_type' can register to this module and could be used by > RocketMQ. > > To do message filter when pull message from store is the basic > implementation.But for high subscription ratio (one topic and N consumers > with SQL92 expression), it would increase the gc frequency and occupy more > system resources, especially when message body is not small(greater than > 1k). The reason is: > > 1. off-heap to heap, once every consumer subscribed same topic pull message. > 2. decode message properties, once every consumer subscribed same topic > pull message. > > > So I optimize via calculate the filter results of all consumers subscribed > same topic when broker build message queue(maybe slow down this procedure), > and save the results to extend file linked to queue. I would describe the > details in PR later. > > Thanks, > Eric > > > On Fri, Mar 17, 2017 at 2:52 PM, Von Gosling <[email protected]> wrote: > >>> Here's any idea -- how about working with the ActiveMQ project to extract >>> its SQL92/XPATH implementation of message selectors into some sort of >>> modular component that could be used on both projects? I am willing to >>> introduce the idea if on the ActiveMQ dev list if you are interested. >> >> Cool ~ If the filter module can be extracted from ActiveMQ, we are happy >> to integrate it naturally. Let ’s listen the filter module contributor >> liuxue’s idea. We want to learn more about some keys about his >> implementation :-) >> >> >> >>> 在 2017年3月17日,13:02,Bruce Snyder <[email protected]> 写道: >>> >>> Taking code instead of some sort of collaboration is not in the spirit of >>> The Apache Way: http://theapacheway.com/ >>> >>> Here's any idea -- how about working with the ActiveMQ project to extract >>> its SQL92/XPATH implementation of message selectors into some sort of >>> modular component that could be used on both projects? I am willing to >>> introduce the idea if on the ActiveMQ dev list if you are interested. >>> >>> Bruce >>> >>> On Thu, Mar 16, 2017 at 8:45 PM, Justin Mclean <[email protected] >>> >>> wrote: >>> >>>> Hi, >>>> >>>>> My question: Is it appropriate that extracting ActiveMQ's JMS selector >>>>> implementation into RocketMQ codebase(maybe we will add some extensions >>>>> upon it)? >>>> >>>> It not considered good form to copy other projects code and put into our >>>> repo. >>>> >>>> It would be better to collaborate on the code in their project if that >> is >>>> possible. >>>> >>>> Thanks, >>>> Justin >>>> >>>> >>> >>> >>> -- >>> perl -e 'print >>> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*" );' >>> >>> ActiveMQ in Action: http://bit.ly/2je6cQ >>> Blog: http://bsnyder.org/ <http://bruceblog.org/> >>> Twitter: http://twitter.com/brucesnyder >> >>
