Получаю события mqtt, но не могу сохраниться в моей базе данныхJAVA

Программисты JAVA общаются здесь
Anonymous
Получаю события mqtt, но не могу сохраниться в моей базе данных

Сообщение Anonymous »

Я использую Quarkus с размахом, и большая часть моего приложения используется для ответа на HTTP-запросы.

Код: Выделить всё

io.quarkus
quarkus-hibernate-orm-panache
3.11.0

У меня есть несколько объектов (@Entity Device в данном случае), и я могу использовать постоянство (запись, обновление, удаление) из каждой конечной точки.
Однако теперь я я использую клиент Mqtt, где подписываюсь на некоторые события.

Код: Выделить всё

@Transactional
@ApplicationScoped
@ActivateRequestContext
public class Mqtt5ClientConnector {

// constructor, connection methods, etc

static class SamplePublishEvents implements Mqtt5ClientOptions.PublishEvents {
CountDownLatch messagesReceived;

SamplePublishEvents(int messageCount) {
messagesReceived = new CountDownLatch(messageCount);
}

@Override
public void onMessageReceived(Mqtt5Client client, PublishReturn publishReturn) {
PublishPacket publishPacket = publishReturn.getPublishPacket();

String publishedTopic = publishPacket.getTopic();
String eventPayload = new String(publishPacket.getPayload());
System.out.println("Publish received on topic: " + publishedTopic);
System.out.println("Message: " + eventPayload);

//do some stuff

Device.find("id", "1234"); //works
Device new_device = new Device();
new_device.id = "12345";
new_device.persist(); //does not work
}
}

// everytime I initialize the quarkus application I connect to mqqt and subscrive some topics
@Startup
@ActivateRequestContext
void init(){
client = builder.build();
client.start();

/* Connect */
try {
lifecycleEvents.connectedFuture.get(5, TimeUnit.SECONDS);
} catch (Exception ex) {
throw new RuntimeException("Exception occurred during connect", ex);
}

/* Subscribe */
SubscribePacket.SubscribePacketBuilder subscribeBuilder = new SubscribePacket.SubscribePacketBuilder();
subscribeBuilder.withSubscription("topic", QOS.AT_LEAST_ONCE, false, false, SubscribePacket.RetainHandlingType.DONT_SEND);
subscribeBuilder.withSubscription("topic2", QOS.AT_LEAST_ONCE, false, false, SubscribePacket.RetainHandlingType.DONT_SEND);
try {
client.subscribe(subscribeBuilder.build()).get(5, TimeUnit.SECONDS);
} catch (Exception ex) {
System.out.println("Subscription failed");
onApplicationFailure(ex);
}

}
}
Каждое событие, которое я получаю, я не могу сохранить новую информацию в базе данных, но могу читать данные из базы данных.
Я получаю следующую ошибку:
р>

Код: Выделить всё

jakarta.enterprise.inject.CreationException: java.lang.ClassNotFoundException: io/quarkus/hibernate/orm/runtime/TransactionSessions
at org.hibernate.Session_OpdLahisOZ9nWRPXMsEFQmQU03A_Synthetic_Bean.create(Unknown Source)
Что мне нужно сделать, чтобы иметь возможность сохранять данные при получении события mqtt?

Подробнее здесь: https://stackoverflow.com/questions/788 ... y-database

Вернуться в «JAVA»