
[英]How to access reactive Panache Entity Session Manager from a websocket endpoint? (Quarkus, Mutiny, Panache, Reactive)
[英]Pubsub message with reactive panache monogodb failing to create ReactiveTransaction with session is null error
我有一个 quarkus 项目使用反应式华丽连接到 monogdb。
我希望我的方法被包装在事务中,我当前的代码大致如下所示:
@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
它发生在代码尝试将 go 放入handleMessage
时,因此当@ReactiveTransactional
的方面被触发时
我要注意的是什么导致了这个问题,因为我找不到任何可能是问题根源的东西。
目前看来,panache 不支持 mongodb 中的事务,这是此问题的根源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.