具有反应性panache moniodb的Pubsub消息无法创建具有会话的ReactiveTransaction为nu



我有一个quarkus项目,使用反应式panache连接到monodb。

我希望我的方法被封装在一个事务中,我当前的代码大致如下:

@Traced
@ApplicationScoped
@Startup
public class MyReceiver implements com.google.cloud.pubsub.v1.MessageRecevier {
@Override
@ActivateRequestContext
public void receiveMessage(PubsubMessage pubsubMessage, AckReplyConsumer ackReplyConsumer) {
try {
final String messageStr = pubsubMessage.getData().toStringUtf8();
final MyMessage messageContent = objectMapper.readValue(messageStr, getTypeReference());
handleMessage(messageContent).await().indefinitely();
ackReplyConsumer.ack();
} catch (Throwable ex) {
log.warn("{} Message ID: [{}]  on [{}] ", ex.getMessage(), pubsubMessage.getMessageId(), subscriptionName);
ackReplyConsumer.nack();
}
}
public TypeReference<MyMessage> getTypeReference() { 
return new TypeReference<>(){};
}
@ReactiveTransactional
public Uni<Void> handleMessage(MyMessage message) {
// code here is never reached
}
}

然而,当我试图测试我的代码并得到一条消息时,

我收到这个错误:java.lang.NullPointerException: Cannot invoke "org.hibernate.reactive.mutiny.Mutiny$Session.withTransaction(java.util.function.Function)" because "session" is null

当代码试图进入handleMessage时,就会发生这种情况,因此当触发@ReactiveTransactional的方面时,

我能注意到什么导致了这种情况,因为我找不到任何可能是问题根源的东西。

目前看来,panache不支持mongodb中的事务,而mongodb正是这个问题的根源。

最新更新