可以尝试以下解决方案来解决ActiveMQ Artemis主题监听器无法使用Spring @JmsListener接收消息的问题:
org.springframework.boot
spring-boot-starter-artemis
org.springframework.boot
spring-boot-starter-activemq
spring.artemis.mode=embedded # 或者使用remote,根据您的部署情况来选择
spring.artemis.host=localhost # Artemis服务器的主机名或IP地址
spring.artemis.port=61616 # Artemis服务器的端口号
spring.artemis.user=username # Artemis服务器的用户名
spring.artemis.password=password # Artemis服务器的密码
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
@Configuration
@EnableJms
public class JmsConfig {
@Bean
public ActiveMQConnectionFactory connectionFactory() {
return new ActiveMQConnectionFactory();
}
@Bean
public JmsListenerContainerFactory> jmsListenerContainerFactory(ActiveMQConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
}
}
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class MyMessageListener {
@JmsListener(destination = "myTopic")
public void onMessage(String message) {
System.out.println("Received message: " + message);
}
}
请注意,上述代码中的destination属性值应该设置为您要监听的ActiveMQ Artemis主题的名称。
以上是解决ActiveMQ Artemis主题监听器无法使用Spring @JmsListener接收消息的一种常见方法。根据您的具体需求和情况,可能需要进行适当的调整和配置。