Hapi API:如何修改Message ACK ID行为

时间:2014-12-16 21:53:59

标签: apache-camel hl7 hapi

我使用以下代码生成消息ACK:

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

这会产生以下警告:

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)

我显然可以设置删除警告的权限,但是我想知道如何告诉Hapi使用内部ID生成器或可能是ID存储在数据库中的生成器?

1 个答案:

答案 0 :(得分:2)

HAPI提供IDGenerator接口,以提供ID生成的不同实现。如果你看一下该类的JavaDoc,你会发现一堆不同的ID生成选项,你也可以自己动手。

要实际设置ID生成器很简单,只需将其设置在存储在上下文中的ParserConfiguration上。

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

如果您使用该上下文对象创建服务器,那么您已完成,或者如果您没有,则可以在生成ACK之前在接收的消息上明确设置它。

    in.setParser(ctx.getPipeParser());

-James