为WildFly添加smallrye-in-memory连接器(缩短开发重部署时间)
解决方案:在WildFly中使用SmallRye内存连接器优化开发体验
一、可行性确认
完全可以在WildFly 28.0.1中集成SmallRye In-Memory连接器用于开发阶段,这样既能摆脱对Kafka实例的依赖,还能从根本上解决卸载时通道逐个关闭的耗时问题——内存连接器的启停速度远快于Kafka连接器。
二、具体配置步骤
1. 添加内存连接器依赖
在项目的pom.xml中引入SmallRye内存连接器依赖,建议通过Maven Profile控制仅在开发环境生效,避免打包到生产包中:
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <dependencies> <dependency> <groupId>io.smallrye.reactive</groupId> <artifactId>smallrye-reactive-messaging-in-memory</artifactId> <!-- WildFly 28适配的SmallRye版本为4.x,对应内存连接器版本选4.x系列 --> <version>4.10.0</version> <scope>provided</scope> </dependency> </dependencies> </profile> </profiles>
2. 替换开发环境的通道配置
创建src/main/resources/application-dev.properties配置文件,将原有Kafka通道的连接器替换为内存连接器:
# 示例:替换10个Kafka通道为内存通道 mp.messaging.incoming.channel-1.connector=smallrye-in-memory mp.messaging.incoming.channel-1.topic=dev-topic-1 mp.messaging.outgoing.channel-2.connector=smallrye-in-memory mp.messaging.outgoing.channel-2.topic=dev-topic-1 # 其余8个通道依此类推,相同topic的收发通道会自动绑定 mp.messaging.incoming.channel-3.connector=smallrye-in-memory mp.messaging.incoming.channel-3.topic=dev-topic-2 mp.messaging.outgoing.channel-4.connector=smallrye-in-memory mp.messaging.outgoing.channel-4.topic=dev-topic-2
内存连接器通过topic属性匹配收发通道,无需外部消息中间件即可完成本地消息流转。
3. 启动WildFly时加载开发配置
启动WildFly时指定开发配置文件,让项目使用内存连接器:
./standalone.sh -Dmicroprofile.config.profile=dev
三、额外优化:Kafka通道关闭耗时调整
如果偶尔需要用Kafka调试,可尝试配置SmallRye Kafka连接器的关闭超时参数,缩短单个通道的关闭时间:
# 在Kafka通道配置中添加关闭超时(单位:毫秒) mp.messaging.incoming.kafka-channel.consumer.close-timeout=500 mp.messaging.outgoing.kafka-channel.producer.close-timeout=500
内容的提问来源于stack exchange,提问作者Kuhpid
相关产品推荐
相关产品推荐

