spring-boot - 如何将消息从 Spring Boot 推送和消费到独立的 JBoss Wildfly 10 Artemis Activemq?
问题描述
我编写了一个 Spring Boot 应用程序,旨在推送和使用来自 JBoss Wildfly 10 ActiveMQ Artemis 的消息(注意:不是 Apache ActiveMQ 5.x)。我正在通过 Spring Tool Suite 运行此代码。
我还在我的本地系统(在 8080 端口上)上设置了 JBoss Wildfly 10,并在配置文件中运行了相同的standalone-full.xml
配置,以便创建TestQ
在 Wildfly 的消息传递子系统中调用的队列。
接下来,我JMSTemplate
在 Spring Boot 代码中用于推送和使用上述队列中的消息,其中包含以下内容application.properties
:
spring.activemq.username=admin
spring.activemq.username=admin
spring.activemq.broker-url=http://localhost:8080
但是,我Could not send message
在运行代码时遇到错误。
您能否建议需要进行哪些更改?
我的基本目标是使用 Spring Boot 从这个外部队列推送和消费消息。
我在网上尝试了替代方案,但我得到的每个示例都是针对 Apache ActiveMQ 而不是 ActiveMQ Artemis 嵌入到 JBoss Wildfly 中,这是必需的。
我有以下2个课程:
1.
@SpringBootApplication
@EnableJms
public class App {
@Bean
public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}
public static void main(String[] args) {
// Launch the application
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class);
System.out.println("Sending a JMS message.");
jmsTemplate.convertAndSend("sampleQueue", "Hello world!");
}
}
2.
@Component
public class ReceiveMessage {
@JmsListener(destination = "sampleQueue")
public void receiveMessage(String msg) {
System.out.println("Received :" + msg);
}
}
解决方案
在我看来,其中的属性application.properties
是针对 ActiveMQ 5.x 客户端而不是 ActiveMQ Artemis 客户端的。正如Spring Boot 文档所说:
Artemis 配置由
spring.artemis.*
.
此外,您应该将 Wildfly 上的端口直接暴露给 ActiveMQ Artemis 代理,而不是使用合并端口8080
,因为这需要在 Artemis 客户端的 URL 上httpUpgradeEnabled
设置,true
并且由于某种原因无法使用 Spring Boot 集成来做到这一点.
推荐阅读
- regex - RegEx:根据白名单查找域和子域
- ruby-on-rails - 如何在 rbenv 中使用 gemset?
- swiftui - 在 NavigationTitle 下添加字幕
- ruby-on-rails - 如何重定向到不同控制器中的发布操作
- laravel - 我的 Laravel 路由不工作错误 404
- ruby-on-rails - 获取与特定id没有关系的记录
- python - 如何将包含每个时间点的列的数据框转换为每个时间点和患者一行的数据框?
- tensorflow - 关于 tff.simulation.datasets.stackoverflow.load_data(cache_dir = None) 的问题
- r - 是否有一个函数(最好在 lubridate 中)来获取任何给定年份的周数?
- php - 为什么不使用 PHPMailer 发送电子邮件?