1
我正在使用Spring-AMQP監視Play應用程序中的RabbitMQ消息隊列。Play Framework:爲Spring RabbitMQ監聽器手動打開JPA上下文
問題是我無法從偵聽器代碼訪問數據庫,因爲JPA上下文在此範圍內未打開。
我知道Play Framework管理JPA上下文,以便它在處理HTTP請求時處於打開狀態,但有沒有辦法從外部控制器/作業使用JPA?
我正在使用Spring-AMQP監視Play應用程序中的RabbitMQ消息隊列。Play Framework:爲Spring RabbitMQ監聽器手動打開JPA上下文
問題是我無法從偵聽器代碼訪問數據庫,因爲JPA上下文在此範圍內未打開。
我知道Play Framework管理JPA上下文,以便它在處理HTTP請求時處於打開狀態,但有沒有辦法從外部控制器/作業使用JPA?
剛發現答案是使用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);
}
}