quarkus - Quarkus 应用程序可以连接到多个 JMS 代理实例吗?
问题描述
有什么方法可以使用 Quarkus 应用程序中的 JMS 连接到多个 ActiveMQ Artemis 实例?
我在文档中看到,对于 [Qpid JMS - AMQP] 和 [Artemis JMS],属性中的连接 URL 都是字符串,并且它是必需的。这是否意味着我不能指定多个要连接的代理 URL?
我不想使用camel-quarkus-activemq
或camel-quarkus-jms
因为这个当前的错误。
解决方案
就像@Robbie Gemmell 在评论中指出的那样。
一个 ConnectionFactory 采用所需参数的代理 URL。然后对于其他的 ConnectionFactory 我们可以直接实例化它。像这样:
应用程序属性
# Configures the Artemis properties.
quarkus.artemis.url=tcp://localhost:61616
quarkus.artemis.username=admin
quarkus.artemis.password=admin
# Broker URL for the second ConnectionFactory
brokerURLService=tcp://remote-service:61616
骆驼配置
@ApplicationScoped
public class CamelConfigurationz {
@Value("${brokerURLService}")
private String brokerURLService;
@Named
public Sjms2Component sjms2(ConnectionFactory connectionFactory) {
Sjms2Component sjms2 = new Sjms2Component();
sjms2.setConnectionFactory(connectionFactory);
return sjms2;
}
@Named
public Sjms2Component sjms2Service(ConnectionFactory amqJmsServiceFactory) {
Sjms2Component sjms2Service = new Sjms2Component();
sjms2Service.setConnectionFactory(amqJmsServiceFactory);
return sjms2Service;
}
@Named
public ActiveMQJMSConnectionFactory amqJmsServiceFactory() throws JMSException {
ActiveMQJMSConnectionFactory amqJmsServiceFactory = new ActiveMQJMSConnectionFactory();
amqJmsServiceFactory.setBrokerURL(brokerURLService);
return amqJmsServiceFactory;
}
}
路线
public class CamelRoutes extends EndpointRouteBuilder {
@Override
public void configure() throws Exception {
from(sjms2("inquarkus"))
.log("got activemq message ---------------------------------")
.to(sjms2("outquarkus"));
from(sjms2("sjms2Service", "inquarkusService"))
.log("got activemq message service ---------------------------------")
.to(sjms2("sjms2Service", "outquarkusService"));
}
}
它可以以不同的方式完成,因此请注意,我在上面的示例中也使用了 spring di 扩展来使用@Value。Camel-quarkus-endpointdsl 也可以使用 EndpointRouteBuilder。
推荐阅读
- java - 如何将科学运算符 E 与变量一起使用?
- python - Keras 图像分类模型在 Spyder 中完美运行,但在 Streamlit 上仅分类一个类
- docker - Jenkins - Docker 构建时间
- apache-beam - Apache Beam - 加入两个行数不等的集合
- python - 在 django 中对 url1 执行任务后如何重定向到 url2?
- c# - 如何在 stripe.net NuGet Package 15.3.2 版本中使用 Persons 对象
- r - 如何通过滞后日期和ID根据另一个数据框替换数据框中列的某些值?
- python - 从 gridlayout 中删除最后一个小部件
- kotlin - 通过杰克逊序列化“Nothing?”属性
- bigcommerce - Bigcommerce 模具产品网格或卡片