That is configured by which param? plugin_chansize or which?

Hopefully I will not hit the case as there will be no more than 10 messages 
emitted by a single decoder at the same time.
But if there are several inputs with the same decoder running it becomes not so 
unlikely..


Timur
On 19 Jan 2016 at 23:07:20, Rob Miller ([email protected]) wrote:

Yes, decoders do, but keep in mind that none of the messages will be injected 
until they're *all* injected. This isn't usually a problem if you're only 
emitting a few output messages per input message, but if you're emitting a lot 
of messages you can easily exhaust the message pool.  

Filters don't have this problem.  

-r  



On 01/19/2016 12:04 PM, Timur Batyrshin wrote:  
> Ok, thanks for clarification!  
>  
> I think I’ll have to split the messages in decode then.  
> Do decoders support injecting several messages?  
>  
> Timur  
>  
> On 19 Jan 2016 at 23:00:53, Rob Miller ([email protected]  
> <mailto:[email protected]>) wrote:  
>  
> > No, I mean that SandboxEncoders don't at this point support multiple  
> > inject calls for each input message. You can only call inject once. If  
> > you want smaller input, you'll have to do the work in a filter.  
> >  
> > -r  
> >  
> >  
> > On 01/19/2016 11:53 AM, Timur Batyrshin wrote:  
> > > My point was not accumulating strings in output buffer but injecting  
> > > several messages instead to make them smaller.  
> > > Or do you mean that inject_message() run several times in a single run  
> > > should work?  
> > > I’ll try that — haven’t done that yet.  
> > >  
> > >  
> > > Timur  
> > >  
> > > On 19 Jan 2016 at 22:50:28, Rob Miller ([email protected]  
> > > <mailto:[email protected]>) wrote:  
> > >  
> > > > Yes, that's right. A SandboxEncoder can only make a single inject  
> > > > call. If you call `inject_message`, then you will be emitting a  
> > > > protobuf encoded Heka message. If you call `inject_payload`, then you  
> > > > will be emitting a UTF8 encoded set of bytes. If you want to  
> > > > accumulate multiple string values in the output buffer, you can use  
> > > > `add_to_payload` before a final `inject_payload` call.  
> > > >  
> > > > -r  
> > > >  
> > > >  
> > > > On 01/16/2016 12:08 PM, Timur Batyrshin wrote:  
> > > > > An encoder I was using for reference:  
> > > > >  
> > > > > function process_message()  
> > > > > inject_payload("msg1", "", "msg1")  
> > > > > inject_payload("msg2", "", "msg2")  
> > > > > return 0  
> > > > > end  
> > > > >  
> > > > > This produces only “msg2”.  
> > > > >  
> > > > >  
> > > > > Timur  
> > > > >  
> > > > >  
> > > > > On 16 Jan 2016 at 22:09:35, Timur Batyrshin 
> > > > > ([email protected]  
> > > > > <mailto:[email protected]>) wrote:  
> > > > >  
> > > > > > Hi,  
> > > > > >  
> > > > > >  
> > > > > > I’ve been trying to do some buffering and splitting of messages in 
> > > > > > an  
> > > > > > encoder and I’ve run in a following issue.  
> > > > > >  
> > > > > > Looks like calling inject_payload() several times in a single run 
> > > > > > of  
> > > > > > encoder’s process_message() doesn’t work and only the last message 
> > > > > > is  
> > > > > > injected.  
> > > > > > Is it so?  
> > > > > >  
> > > > > > If yes, any ideas how can I solve the following task?  
> > > > > > * I have incoming messages consisting of up to several hundreds of  
> > > > > > custom fields  
> > > > > > * I’m encoding the fields into JSON array like [{“metric":  
> > > > > > “foobar.count", "value": 1000}, {“metric": “bazqux.rate”, “value”:  
> > > > > > 10}] and sending them out via HTTP to a different service  
> > > > > > * I’d like to keep outgoing HTTP messages relatively small (no more 
> > > > > >  
> > > > > > than a few dozens of fields) and for that reason I’m going to split 
> > > > > >  
> > > > > > messages with too many fields into several smaller ones  
> > > > > >  
> > > > > > For that I was going to do the splitting inside encoder attached to 
> > > > > >  
> > > > > > HTTPOutput and calling inject_payload() several times but it seems  
> > > > > > that only the last message is sent out.  
> > > > > > I’ve tried setting max_process_inject = 1000 in [hekad] config 
> > > > > > section  
> > > > > > but this didn’t help either.  
> > > > > >  
> > > > > > I could try using a filter to split messages and reinject them back 
> > > > > > to  
> > > > > > Heka (haven’t tested yet if it is going to work in this scenario) 
> > > > > > but  
> > > > > > this looks like a bit overweight to me.  
> > > > > >  
> > > > > > Any other ideas how to handle the task?  
> > > > > >  
> > > > > >  
> > > > > > Thanks,  
> > > > > > Timur  
> > > > >  
> > > > >  
> > > > > _______________________________________________  
> > > > > Heka mailing list  
> > > > > [email protected]  
> > > > > https://mail.mozilla.org/listinfo/heka  
> > > > >  
> > > >  
> >  

_______________________________________________
Heka mailing list
[email protected]
https://mail.mozilla.org/listinfo/heka

Reply via email to