我正在使用Spring-AMQP来监控Play应用程序中的RabbitMQ消息队列。
问题是我无法从侦听器代码访问我的数据库,因为JPA上下文未在此范围内打开。
我理解Play Framework管理JPA上下文,以便在处理HTTP请求时打开它,但有没有办法可以从外部Play控制器/作业中使用JPA?
答案 0 :(得分:3)
刚刚找到答案就是使用JPAPlugin!
示例侦听器方法:
public void process(Message message) {
JPAPlugin.startTx(false);
boolean rollBack = false;
try {
// work with your models
JPA.em().flush();
} catch (RuntimeException e) {
rollBack = true;
// throw exception to prevent msg ACK, need to refine error handling :)
throw e;
} finally {
JPAPlugin.closeTx(rollBack);
}
}