我使用以下代码生成消息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存储在数据库中的生成器?
答案 0 :(得分:2)
HAPI提供IDGenerator接口,以提供ID生成的不同实现。如果你看一下该类的JavaDoc,你会发现一堆不同的ID生成选项,你也可以自己动手。
要实际设置ID生成器很简单,只需将其设置在存储在上下文中的ParserConfiguration上。
HapiContext ctx = new DefaultHapiContext();
ctx.getParserConfiguration().setIdGenerator(new FileBasedHiLoGenerator());
如果您使用该上下文对象创建服务器,那么您已完成,或者如果您没有,则可以在生成ACK之前在接收的消息上明确设置它。
in.setParser(ctx.getPipeParser());
-James