You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wildfly 33部署MicroProfile+Kafka项目遇Emitter依赖缺失问题

问题描述

部署MicroProfile + Kafka示例项目到Wildfly 33/Java 17环境时,出现org.eclipse.microprofile.reactive.messaging.Emitter类找不到的部署异常。尝试两种部署方式均报错:

  • 部署至使用standalone-microprofile.xml配置的独立服务器
  • 通过wildfly-maven-plugin结合wildfly-ee-galleon-pack部署

项目配置详情如下:

Endpoint代码

@ApplicationScoped
@Path("/kafka")
public class KafkaEndpoint {
    private static final Logger LOG = LoggerFactory.getLogger(KafkaEndpoint.class);

    @Inject
    @Channel("to-kafka")
    private Emitter<String> em;
    
    @GET
    @Path("/test/{message}")
    public Response getTest(@PathParam("message") String message) {
        LOG.info("Starting rest...");
        em.send(message);
        return Response.ok("Message sent").build();
    }

    @Incoming("to-kafka")
    public void processMessage(String message) {
        LOG.info("Message received: {}", message);
    }
}

配置文件(src/main/resources/META-INF/microprofile-config.properties)

mp.messaging.outgoing.to-kafka.connector=smallrye-kafka
mp.messaging.outgoing.to-kafka.topic=my-topic
mp.messaging.outgoing.to-kafka.bootstrap.servers=localhost:9092
mp.messaging.outgoing.to-kafka.value.serializer=org.apache.kafka.common.serialization.StringSerializer

父POM依赖管理

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.wildfly.bom</groupId>
            <artifactId>wildfly-microprofile</artifactId>
            <version>33.0.2.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

项目POM依赖

<dependencies>
    <dependency>
        <groupId>jakarta.enterprise</groupId>
        <artifactId>jakarta.enterprise.cdi-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.ws.rs</groupId>
        <artifactId>jakarta.ws.rs-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.microprofile.reactive.messaging</groupId>
        <artifactId>microprofile-reactive-messaging-api</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

Maven插件配置

<plugin>
    <groupId>org.wildfly.plugins</groupId>
    <artifactId>wildfly-maven-plugin</artifactId>
    <configuration>
        <addUser>
            <users>
                <user>
                    <username>adm</username>
                    <password>changeit</password>
                    <realm>ManagementRealm</realm>
                </user>
            </users>
        </addUser>
        <filename>${project.build.finalName}.${project.packaging}</filename>
        <feature-packs>
            <feature-pack>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-ee-galleon-pack</artifactId>
            </feature-pack>
        </feature-packs>
        <layers>
            <layer>jaxrs</layer>
            <layer>microprofile-reactive-messaging</layer>
            <layer>microprofile-reactive-messaging-kafka</layer>
        </layers>
    </configuration>
</plugin>
解决方案

1. 确认独立服务器的Reactive Messaging模块已启用

检查standalone-microprofile.xml中是否包含以下扩展和子系统,缺失则手动添加后重启服务器:

<extensions>
    <extension module="org.wildfly.extension.microprofile.reactive-messaging-smallrye"/>
    <extension module="org.wildfly.extension.microprofile.reactive-messaging-kafka-smallrye"/>
</extensions>

<subsystems>
    <subsystem xmlns="urn:wildfly:microprofile-reactive-messaging-smallrye:1.0"/>
    <subsystem xmlns="urn:wildfly:microprofile-reactive-messaging-kafka-smallrye:1.0"/>
</subsystems>

2. 修正Maven插件的版本一致性

明确指定插件和Feature Pack的版本,与Wildfly 33.0.2.Final保持一致,避免依赖冲突:

<plugin>
    <groupId>org.wildfly.plugins</groupId>
    <artifactId>wildfly-maven-plugin</artifactId>
    <version>33.0.2.Final</version>
    <configuration>
        <addUser>
            <users>
                <user>
                    <username>adm</username>
                    <password>changeit</password>
                    <realm>ManagementRealm</realm>
                </user>
            </users>
        </addUser>
        <filename>${project.build.finalName}.${project.packaging}</filename>
        <feature-packs>
            <feature-pack>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-ee-galleon-pack</artifactId>
                <version>33.0.2.Final</version>
            </feature-pack>
        </feature-packs>
        <layers>
            <layer>jaxrs</layer>
            <layer>microprofile-reactive-messaging</layer>
            <layer>microprofile-reactive-messaging-kafka</layer>
        </layers>
    </configuration>
</plugin>

3. 清理并重新构建部署

执行Maven命令清理缓存、打包并部署:

mvn clean package wildfly:deploy

独立服务器部署时,删除standalone/deployments目录下的旧部署包和标记文件,再重新上传新包。

4. 验证Kafka服务可用性

确保本地Kafka服务已启动,localhost:9092可正常访问,避免因服务不可用导致的间接类加载异常。


内容的提问来源于stack exchange,提问作者ropogit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:44:49