Hapi API: how to modify the Message ACK ID behaviour

778 views Asked by At

I am using the following code to generate a message ACK:

public static Message process(Message in) throws Exception {     
        ADTReceiverQueue.getInstance().submit(in);
        Message out =  in.generateACK();
        return out;
    }
}

This generates the following warning:

FileBasedGenerator         - Could not write ID to file /var/lib/tomcat7/./id_file, going to use internal ID generator. /var/lib/tomcat7/./id_file (Permission denied)

I can obviously set permissions to remove the warning, however I am wondering how to tell Hapi to use the internal ID generator or possibly a generator where the ID is stored in a database?

1

There are 1 answers

1
James Agnew On BEST ANSWER

HAPI provides the IDGenerator interface to provide different implementations of ID generation. If you look at the JavaDoc for that class you'll find a bunch of different options for doing ID generation and you could certainly roll your own too.

To actually set the ID generator is easy enough, you just need to set it on the ParserConfiguration which is stored in the context.

    HapiContext ctx = new DefaultHapiContext();
    ctx.getParserConfiguration().setIdGenerator(new FileBasedHiLoGenerator());

If you use that context object to create your server then you're done, or if you didn't you can explicitly set it on the received message before generating an ACK.

    in.setParser(ctx.getPipeParser());

-James