如何解决Quarkus应用程序可以连接到多个JMS代理实例吗?
是否可以使用Quarkus应用程序中的JMS连接到ActiveMQ Artemis的多个实例?
我在the documentation中看到,对于[Qpid JMS-AMQP]和[Artemis JMS],属性中的连接URL都是字符串,并且是必需的。这是否意味着我无法指定要连接的多个代理URL?
由于this current bug,我不想使用camel-quarkus-activemq
或camel-quarkus-jms
。
解决方法
就像@Robbie Gemmell在评论中指出的那样。
一个ConnectionFactory接受必需参数的代理URL。然后对于其他ConnectionFactory,我们可以直接实例化它。像这样:
application.properties
# 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
CamelConfiguration
@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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。