Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 6FDD2200BE4 for ; Wed, 21 Dec 2016 18:32:36 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 6E53B160B26; Wed, 21 Dec 2016 17:32:36 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8DF81160B18 for ; Wed, 21 Dec 2016 18:32:35 +0100 (CET) Received: (qmail 39284 invoked by uid 500); 21 Dec 2016 17:32:34 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 39268 invoked by uid 99); 21 Dec 2016 17:32:34 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Dec 2016 17:32:34 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 402CD18C6BB for ; Wed, 21 Dec 2016 17:32:33 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.879 X-Spam-Level: ** X-Spam-Status: No, score=2.879 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_REPLY=1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id QqPxkWO3grGz for ; Wed, 21 Dec 2016 17:32:30 +0000 (UTC) Received: from mail-yw0-f177.google.com (mail-yw0-f177.google.com [209.85.161.177]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id CEBFF5F298 for ; Wed, 21 Dec 2016 17:32:30 +0000 (UTC) Received: by mail-yw0-f177.google.com with SMTP id t125so102763622ywc.1 for ; Wed, 21 Dec 2016 09:32:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=CqOZYOdxRe3cbI5Airn05Q/CGRyvuHV1mGQCwszO2fE=; b=Dj0GQIf1eUNWCYBo4b+UGzJ9JMNhv5sF2uvuKo1uobd33IQtMvYjrxxHTNqAoWM6Q4 B73jc5jb0zwyZRTP6NIGWKEA6T07OhbroXZJTwzYX7gwILU884yMfh+Dm8ZQJvLB4v/r pf7aaNT6YxnUvA0Sk645WG1WMA4IlEFsy6FIqqcwgNoS2efuXGsRlRgjBf3VHw77H7XI BgWYVjQVbPbpFjFI00WJUu698hl8KVOpRDidLDDibj9CBQjNMqGOV2ne1BaFZ32QWfUp RQlP7H/8P+Ou1D36ZcBoWcOvxDyBHRUnecNjr8vPgbxMgcNEjDe18X8IDf7otkYKkGTo Kw+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=CqOZYOdxRe3cbI5Airn05Q/CGRyvuHV1mGQCwszO2fE=; b=npevOYeppg85Pqj4IF697d6zgFclvNgjPUFcWFwsObjQQecxC3ARiSm+2ObyuBaczN y9+yr8u4OViDVlnNXjyAHDA0MdkZk6bEwfinQdzHeiKLEmCcK4J8gzYM10B80oNwgOum SQVA6AI96mA1nEjHsRNiW0gNqjogRY3j7RhgJNtqmaIVCb7vI3QmcTlmJaKQc36R5Bd0 iQX1FTnIzMhEs4MdTcuYa+QxkVQgRBqmH9zKmG7orR8AOrUDLNzaJND4rq61/WxSl/fi XZCGZuHkuK28E6i/ZQyViN77YczqkeoLKatXuz0EeqbmC89kx+9Smo4l/gD775Qd8Wbo ALOA== X-Gm-Message-State: AIkVDXL2TG6zD1N1OZua7TOznrn5NqhZqwWygh1PqXWa9NSclYkSYMWmS9fwCidUl1oeubeqUf2Pkdc9M4n9IQ== X-Received: by 10.129.74.85 with SMTP id x82mr4390072ywa.219.1482341550219; Wed, 21 Dec 2016 09:32:30 -0800 (PST) MIME-Version: 1.0 Received: by 10.37.81.133 with HTTP; Wed, 21 Dec 2016 09:31:59 -0800 (PST) In-Reply-To: References: <2c22bee4-5d67-c764-fe6b-4a5cd2e14999@gmail.com> <166f2ace-e11c-2cba-21ff-feeebb775057@gmail.com> <364c0ee7-c40a-2a57-bab1-9b6ff0916d80@gmail.com> From: Christopher Shannon Date: Wed, 21 Dec 2016 12:31:59 -0500 Message-ID: Subject: Re: [DISCUSS] Artemis plugins ARTEMIS-898 To: dev@activemq.apache.org Content-Type: multipart/alternative; boundary=001a114c8760896deb05442e8954 archived-at: Wed, 21 Dec 2016 17:32:36 -0000 --001a114c8760896deb05442e8954 Content-Type: text/plain; charset=UTF-8 Matt, that sounds like a good start to me with the plugins. Camel is another good feature from 5.x which would be good to have in Artemis. On Wed, Dec 21, 2016 at 12:20 PM, Clebert Suconic wrote: > I guess this is an old JIRA: > > https://issues.apache.org/jira/browse/ARTEMIS-17 Add Broker > Interceptor - like the Camel Broker Component in ActiveMQ 5 > > On Wed, Dec 21, 2016 at 10:08 AM, Matt Pavlovich > wrote: > > Christopher- > > > > I agree.. what are your thoughts on this breakout of plugin types: > > > > 0. Interceptors: protocol-level plugins (already exist) > > > > 1. Message handling plugin(s) (recv message / send message, manipulate > > headers-- timestamp, expiry, etc) > > --> Re-use Artemis "Transformer" > > > > 2. Broker object life cycle (queue created, consumer added, broker added > to > > cluster, broker-becomes-master, etc) > > > > 3. "ActiveMQ 5.x Destination Policies" Behaviors (message dispatch, > > subscription retention policies, etc.. last message, last # messages, > last > > messages for X period of time). Destination Garbage Collection > > > > > > -Matt Pavlovich > > > > > > On 12/21/16 7:40 AM, Christopher Shannon wrote: > >> > >> I should also add that we don't need to make it one global API or > >> interface > >> like 5.x Maybe it's split up into multiple APIs or plugin types. You > >> could have some sort of plugin to customize connection handling, or a > >> plugin to do message transformation, customizing message dispatch, etc. > >> Some of this probably already exists but that's the idea, just a way to > >> customize behavior. I'm also willing to help out with the PRs to add > this > >> functionality. > >> > >> On Wed, Dec 21, 2016 at 7:13 AM, Christopher Shannon < > >> christopher.l.shannon@gmail.com> wrote: > >> > >>> Advisories are extremely useful and being able to monitor events in > >>> detail makes it possible to detect anomalies and to solve issues > >>> quickly. You can do a lot of cool things like process those events > >>> with a CEP engine (like drools) to keep track of the health of a > >>> broker. If the notification API can be used then that is great, in > >>> fact I made mention of that API in my Jira. At the end of the day the > >>> implementation details don't need to be the same as long as long as > >>> the functionality is similar. IE, using notifications instead of > >>> advisories or using JMS 2.0 shared subscriptions instead of Virtual > >>> Topics. Not all features will be moved or have equivalents of course > >>> (there's a ton of bloat in 5.x) but I think that if there's useful > >>> stuff that have valid use cases we should try and support it. > >>> > >>> Getting back on track, a plugin API is very high on my list as a > >>> useful feature and I use it extensively in 5.x. Notifications are > >>> async/callbacks and can be done out of band but having some way to > >>> introduce new behavior "in band" or synchronous is also important. > >>> Take for example the following use cases: > >>> > >>> 1) A user has a requirement to restrict the names of a destination to > >>> a subset of characters > >>> 2) A user wants to add in custom complex security (maybe they want to > >>> block certain users from creating a producer) > >>> 3) A user wants to do some sort of special auditing or logging > >>> 4) A user wants to send custom messages/events when things happen > >>> > >>> The point is that there are any number of use cases that someone might > >>> have or requirements that they need to implement to make the broker > >>> work for them. Instead of trying to solve everyone's use case in my > >>> opinion it's a good idea to make it extensible so people can add in > >>> their own functionality. Many organizations have strict requirements > >>> and rules that need to be followed so there is going to be a > >>> requirement to customize the behavior. > >>> > >>> P.S. removing GC for message memory and maybe using an reusable > >>> off-heap buffer sounds like an awesome idea > >>> > >>> On Tue, Dec 20, 2016 at 5:29 PM, Matt Pavlovich > >>> wrote: > >>>> > >>>> On 12/20/16 4:14 PM, Clebert Suconic wrote: > >>>> > >>>>> On Tue, Dec 20, 2016 at 4:42 PM, Matt Pavlovich > >>>>> wrote: > >>>>>> > >>>>>> I'm not trying to focus on the impl. My goal was to share how users > >>>>>> are > >>>>>> able > >>>>>> to > >>>>> > >>>>> ...configure advisories based on a group of destinations.... > >>>>> > >>>>> > >>>>> That to me is very, very specific to ActiveMQ5.... > >>>>> I am not sure you really need that on Artemis, do you? > >>>> > >>>> Yep, its useful. IBM MQ can do the same on a per-destination basis. > The > >>>> benefit ActiveMQ 5.x has over IBM MQ is that you can apply a > >>> > >>> configuration > >>>> > >>>> based on a destination filter vs having to configure each queue > >>>> individually. > >>>> > >>>>> and that there is a > >>>>>> > >>>>>> gap in Artemis from a functionality perspective. > >>>>>> > >>>>>> Three different things: > >>>>>> > >>>>>> 1. The gap of specific Advisories/Notifications in Artemis v > ActiveMQ > >>>>>> 5 > >>>>>> > >>>>>> 2. How Advisories/Notifications are implemented in Artemis plugin vs > >>> > >>> core > >>>>>> > >>>>>> feature. > >>>>>> > >>>>>> 3. How Advisories/Notifications are configured in Artemis > >>>>> > >>>>> That will be a different API, but that's totally possible to receive > >>>>> notifications: > >>>>> > >>>>> http://activemq.apache.org/artemis/docs/1.5.1/management.html > >>>>> > >>>>> Instead of bringing a new API (Advisory) we could/should look at what > >>>>> notifications are missing and implement them. > >>>> > >>>> Yeah, I'm not married to a specific implementation. This management > >>>> notification piece is new info to me. I was under the impression that > >>>> Advisories of some sort (notifications in Artemis) were at 0% > >>> > >>> implemented. I > >>>> > >>>> need to dig into this some more. > >>>> > >>>>> There are a lot of cool *totally* new things I think we should/could > >>>>> work on. for instance I'm trying to improve / fix message encoding > >>>>> between different protocols (only re-encode a message when needed), > >>>>> and making GC closer to zero by always reusing buffers... That will > be > >>>>> a killing feature... I'm not posting a DISCUSS about that yet as I'm > >>>>> still battling over the code and how I am going to work on that. I > >>>>> will post about it after my holiday's break. > >>>> > >>>> +10000 eliminating memory copy of payload is super valuable > >>>> > >>>> I didn't mean to sidetrack the Plugins discussion to > >>> > >>> Advisory/Notification.. > >>>> > >>>> now back to the plugins discussion ... > > > > > > > > -- > Clebert Suconic > --001a114c8760896deb05442e8954--