AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[quarkus](coding)

Martin Hope
Heschoon
Asked: 2025-04-28 14:19:15 +0800 CST

编译器错误‘插入‘方面标识符’’记录类

  • 5

在我的 Quarkus Java 21 lambda 函数应用程序中,我遵循Powertools Java 库的安装步骤。

我的应用程序包含一个记录对象:

package com.example;

public record ProductDetails(String labelKey, String productType) {}

但是,我的所有记录都出现 Aspectj 错误:

[ERROR] Failed to execute goal dev.aspectj:aspectj-maven-plugin:1.13.1:compile (default) on project lambda-java-quarkus-template: AJC compiler errors:
[ERROR] error at public record CreateCustomerProductRequest(String externalProductCode) {
[ERROR] /mnt/c/Users/me/IdeaProjects/quarkus-lambda-sample-a/src/main/java/be/company/template/adapter/in/alb/model/ProductDetails.java:7:0::0 Syntax error, insert "aspect Identifier" to complete aspect header

为什么会发生这种情况?

我在这里创建了一个重现该问题的项目。您可以通过运行来重现该问题mvn install。

POM 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>quarkus-powertools-mcve</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <compiler-plugin.version>3.14.0</compiler-plugin.version>
        <maven.compiler.release>21</maven.compiler.release>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
        <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
        <quarkus.platform.version>3.21.3</quarkus.platform.version>
        <skipITs>true</skipITs>
        <surefire-plugin.version>3.5.2</surefire-plugin.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>${quarkus.platform.artifact-id}</artifactId>
                <version>${quarkus.platform.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.9.21</version>
        </dependency>
        <dependency>
            <groupId>software.amazon.lambda</groupId>
            <artifactId>powertools-logging</artifactId>
            <version>1.20.1</version>
        </dependency>
        <dependency>
            <groupId>software.amazon.lambda</groupId>
            <artifactId>powertools-tracing</artifactId>
            <version>1.20.1</version>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-arc</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-junit5</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>dev.aspectj</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.13.1</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                    <complianceLevel>11</complianceLevel>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>software.amazon.lambda</groupId>
                            <artifactId>powertools-tracing</artifactId>
                        </aspectLibrary>
                        <aspectLibrary>
                            <groupId>software.amazon.lambda</groupId>
                            <artifactId>powertools-logging</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>quarkus-maven-plugin</artifactId>
                <version>${quarkus.platform.version}</version>
                <extensions>true</extensions>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                            <goal>generate-code</goal>
                            <goal>generate-code-tests</goal>
                            <goal>native-image-agent</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${compiler-plugin.version}</version>
                <configuration>
                    <parameters>true</parameters>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire-plugin.version}</version>
                <configuration>
                    <systemPropertyVariables>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <maven.home>${maven.home}</maven.home>
                    </systemPropertyVariables>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${surefire-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <systemPropertyVariables>
                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner
                        </native.image.path>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <maven.home>${maven.home}</maven.home>
                    </systemPropertyVariables>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>native</id>
            <activation>
                <property>
                    <name>native</name>
                </property>
            </activation>
            <properties>
                <skipITs>false</skipITs>
                <quarkus.native.enabled>true</quarkus.native.enabled>
            </properties>
        </profile>
    </profiles>
</project>
quarkus
  • 1 个回答
  • 30 Views
Martin Hope
Amro Mustafa
Asked: 2024-11-26 23:34:04 +0800 CST

求解过程中的时间折叠上下文传播

  • 5

我正在使用 Timefold 1.15 和 Quarkus 3.1

我正在尝试在解决时间表的过程中保存数据

但我有一些在解决过程中需要的上下文,行安全性的租户上下文和身份上下文

但我面临与上下文不可用相关的问题

示例代码:

  solverManager.solveBuilder()
            .withProblemId(finalRequestId)
            .withProblemFinder((id) -> timeTableJob.get(finalRequestId).timetable)
            .withBestSolutionConsumer(bestSolution -> timeTableJob.put(finalRequestId, Job.ofTimetable(bestSolution)))
            .withFinalBestSolutionConsumer(solution -> {
                timeTableJob.put(finalRequestId,Job.ofTimetable(solution));
                plannedLessonRepository.save(solution);
            })
            .withExceptionHandler((id, exception) -> {
                timeTableJob.put(finalRequestId, Job.ofException(exception));
                LOGGER.error("Failed solving jobId ({}).", finalRequestId, exception);
            })
            .run();

错误:

2024-11-26 17:18:32,463 错误 [org.acm.sch.res.TimeTableResource] (pool-13-thread-1) 无法解决 jobId (101)。:org.hibernate.HibernateException:SessionFactory 配置为多租户,但未在 org.hibernate.internal.AbstractSharedSessionContract.getTenantId(AbstractSharedSessionContract.java:292) 处指定租户标识符,在 org.hibernate.internal.AbstractSharedSessionContract.(AbstractSharedSessionContract.java:193) 处指定租户标识符,在 org.hibernate.internal.SessionImpl.(SessionImpl.java:230) 处指定 org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1381) 处指定org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1247) at io.quarkus.hibernate.orm.runtime.session.JTASessionOpener.openSession(JTASessionOpener.java:46) at io.quarkus.hibernate.orm.runtime.session.TransactionScopedSession.acquireSession(TransactionScopedSession.java:92) at io.quarkus.hibernate.orm.runtime.session.TransactionScopedSession.find(TransactionScopedSession.java:175) at org.hibernate.engine.spi.SessionLazyDelegator.find(SessionLazyDelegator.java:825) at org.hibernate.Session_OpdLahisOZ9nWRPXMsEFQmQU03A_Synthetic_ClientProxy.find(Unknown Source) at io.quarkus.hibernate.orm.panache.common.runtime.AbstractJpaOperations.findById(AbstractJpaOperations.java:183) at org.acme.timetable.persistence.PlannedLessonRepository.findById(PlannedLessonRepository.java) at org.acme.timetable.persistence.PlannedLessonRepository.findById(PlannedLessonRepository.java) at org.acme.timetable.persistence.PlannedLessonRepository.save(PlannedLessonRepository.java:24) at org.acme.timetable.persistence.PlannedLessonRepository_Subclass.save$$superforward(未知来源) at org.acme.timetable.persistence.PlannedLessonRepository_Subclass$$function$$1.apply(未知来源) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62) at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:136) at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107) at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38) at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61) at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32) at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source) at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42) at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30) 在 io.quarkus.arc.impl。InvocationContexts.performAroundInvoke(InvocationContexts.java:27) at org.acme.timetable.persistence.PlannedLessonRepository_Subclass.save(未知来源) at org.acme.timetable.persistence.PlannedLessonRepository_ClientProxy.save(未知来源) at org.acme.timetable.rest.TimeTableResource.lambda$solve$2(TimeTableResource.java:112) at ai.timefold.solver.core.impl.solver.ConsumerSupport.lambda$consumeFinalBestSolution$1(ConsumerSupport.java:102) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) 在 java.base/java.lang.Thread.run(Thread.java:833)

quarkus
  • 1 个回答
  • 37 Views
Martin Hope
Amith Sai
Asked: 2024-10-16 14:44:18 +0800 CST

Quarkus Hibernate Reactive 未在 onFailure() 块中捕获 ConstraintViolationException

  • 7

我正在使用 Hibernate Reactive 和 PostgreSQL 开发一个 Quarkus 项目。我有一个将新用户保留在数据库中的方法,并且我想处理由于电子邮件字段的唯一约束而导致重复用户(相同电子邮件)导致 ConstraintViolationException 的情况。

我使用 .onFailure() 设置了一个错误处理块来捕获此异常并抛出自定义 UserAlreadyExistsException。但是,该异常并未在故障块中被捕获,相反,我在日志中看到了未捕获的 ConstraintViolationException。

@POST
    @Path("/register")
    @WithTransaction
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Uni<Response> registerUser(@Valid Auth authRequest) {
        return authService.createUser(authRequest)
                .onItem().transform(success -> Response.status(Response.Status.CREATED)
                        .entity(success).build())
                .onFailure()
                .recoverWithItem(ex -> {
                    log.error("Unable to create User, email: {}, Exception: {}", authRequest.getEmail(), ex.getMessage(), ex);
                    ErrorResponse errorResponse = new ErrorResponse(ex.getMessage(), Response.Status.INTERNAL_SERVER_ERROR);
                    return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorResponse).build();
                });
    }

public Uni<Auth> createUser(Auth authRequest) {
        User user = new User(authRequest);
        String passwordHash = Password.hash(authRequest.getPassword()).withArgon2().getResult();
        user.setPasswordHash(passwordHash);
        return PanacheEntityBase.persist(user).onItem().transform(success -> {
            log.info("Successfully created user, email: {}", authRequest.getEmail());
            return authRequest;
        })
        .onFailure().invoke(ex -> {
            log.error("Unable to create User, email: {}, Exception: {}",
                    authRequest.getEmail(), ex.getMessage(), ex);
            throw new RegistrationFailedException(Errors.UNABLE_TO_REGISTER_USER + ex.getMessage());
        });
    }

我的期望:

当尝试插入具有现有电子邮件(重复键)的用户时,onFailure()块应捕获 ConstraintViolationException,并抛出自定义 UserAlreadyExistsException。

会发生什么:

错误没有被 onFailure() 块捕获,而是返回了以下错误:

org.hibernate.exception.ConstraintViolationException: error executing SQL statement
[ERROR: duplicate key value violates unique constraint "user_email_key" (23505)]

看起来失败处理程序没有捕获异常,并且我得到了未捕获的异常响应。

quarkus
  • 1 个回答
  • 28 Views
Martin Hope
joe_specimen
Asked: 2024-07-26 00:29:12 +0800 CST

Quarkus Artemis Jms 库不会将消息传递到 ActiveMQ Artemis 上的死信队列

  • 5

我目前正在 Quarkus 项目中实现一个 JMS 消费者,它监听 ActiveMQ Artemis(版本 2.32.0)上的任播队列(“my.edu.queue”)。我想测试的是,如果发生某些业务错误,消息将如何传递到死信队列。我模拟了每五条消息的业务错误(只是抛出异常)。

从 ActiveMQ Artemis 示例(死信示例)的代码来看,死信的代码似乎很简单。我已经按照与示例中相同的方式实现了该功能(正如我所想的那样),只是我使用“quarkus-artemis-jms”库来实现。代码或可能是我的代理设置的问题在于,当我这样做时,我没有在死信队列中收到消息。如果有人能从第一眼就猜出我做错了什么,Session.rollback()我的代码如下。我还将队列的内部 broker.xml 设置为 0(我已将链接添加到我的项目,每个文件都在那里)。JmsMessageConsumermax-delivery-attempts

@ApplicationScoped
public class JmsMessageConsumer {

   private static final Logger log = Logger.getLogger(JmsMessageConsumer.class.getName());

   @Inject
   ConnectionFactory connectionFactory;

   private JMSContext context;
   private Connection connection;
   private Session session;
   private MessageConsumer consumer;
   private MessageProducer dlqProducer;

   @ConfigProperty(name = "my.edu.queue.name", defaultValue = "my.edu.queue")
   String queueName;

   private AtomicInteger counter = new AtomicInteger(0);


   void onStart(@Observes StartupEvent ev) throws JMSException {
      connection = connectionFactory.createConnection();
      session = connection.createSession(true, Session.SESSION_TRANSACTED);

      Queue queue = session.createQueue(queueName);
      consumer = session.createConsumer(queue);

      Queue dlq = session.createQueue(queueName + ".dlq");
      dlqProducer = session.createProducer(dlq);

      connection.start();

      receiveMessages();
   }

   void onStop(@Observes ShutdownEvent ev) throws JMSException {
      connection.close();
   }

   private void receiveMessages() {
      try {
         consumer.setMessageListener(message -> {
            try {
               processMessage(message.getBody(String.class));
               session.commit();
            } catch (Exception e) {
               log.severe("Error processing message: %s".formatted(e.getMessage()));
               try {
                  // sendToDLQ(message);
                  session.rollback();
               } catch (JMSException ex) {
                  throw new RuntimeException(ex);
               }
            }
         });
      } catch (JMSException e) {
         log.severe("Error setting message listener: %s".formatted(e.getMessage()));
      }
   }

   private void processMessage(String text) {
      counter.incrementAndGet();
      if (counter.get() % 5 == 0) {
         throw new RuntimeException("Error in business logic");
      }
      log.info("Processed message: " + text);
   }

}

整个项目(非常简单)及其所有配置文件可在此处找到。我的broker.xml可在里面找到src/resources/broker_conf/broker.xml。

quarkus
  • 1 个回答
  • 20 Views
Martin Hope
capo11
Asked: 2024-02-29 17:49:02 +0800 CST

Qute模板中如何定义列表?

  • 5

Quarkus 版本:3.7.4 我试图在 Qute 模板中定义一个字符串列表,如下所示:

{#let fruits=java.util.Arrays.listOf("Apple", "Orange", "Lime" /}

有没有办法在 Qute 模板中定义列表?

quarkus
  • 1 个回答
  • 23 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve