J'essaie d'envoyer des données à l'instance de Wildfly 10 Artemis et de les récupérer à l'aide d'Apache Camel. Ici, je sais que cela peut être fait en utilisant le composant camel-jms.Envoi de données à une instance Artemis intégrée de Wildfly 10 et récupération de celles-ci. UTILISATION d'Apache Camel
Dans ce cas, j'ai d'abord créé un exemple simple pour vérifier si cela fonctionne bien ou non. Mais il donne une exception ci-dessous au point de création ConnectionFactory.
Exception in thread "main" javax.naming.NamingException: Failed to connect to any server. Servers tried: [http-remoting://localhost:8080]
at org.jboss.naming.remote.client.HaRemoteNamingStore.failOverSequence(HaRemoteNamingStore.java:213)
at org.jboss.naming.remote.client.HaRemoteNamingStore.namingStore(HaRemoteNamingStore.java:144)
at org.jboss.naming.remote.client.HaRemoteNamingStore.namingOperation(HaRemoteNamingStore.java:125)
at org.jboss.naming.remote.client.HaRemoteNamingStore.lookup(HaRemoteNamingStore.java:241)
at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:79)
at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:83)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
mise en œuvre:
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
props.put(Context.PROVIDER_URL, WILDFLY_REMOTING_URL);
props.put(Context.SECURITY_PRINCIPAL, JMS_USERNAME);
props.put(Context.SECURITY_CREDENTIALS, JMS_PASSWORD);
InitialContext context = new InitialContext(props);
ConnectionFactory connectionFactory = (QueueConnectionFactory) context.lookup(JMS_CONNECTION_FACTORY_JNDI);
System.out.println("connectionFactory : " + connectionFactory);
SimpleRouteBuilder routeBuilder = new SimpleRouteBuilder();
CamelContext ctx = new DefaultCamelContext();
ctx.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
ctx.addRoutes(routeBuilder);
ctx.start();
Thread.sleep(5 * 60 * 1000);
ctx.stop();
Constantes:
public final static String JMS_CONNECTION_FACTORY_JNDI="jms/RemoteConnectionFactory";
public final static String JMS_QUEUE_JNDI="jms/queue/TestQ";
public final static String JMS_USERNAME="jmsuser"; // The role for this user is "guest" in ApplicationRealm
public final static String JMS_PASSWORD="[email protected]";
public final static String WILDFLY_REMOTING_URL="http-remoting://localhost:8080";
Importations:
import java.util.Properties;
import javax.jms.ConnectionFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.impl.DefaultCamelContext;
import javax.jms.QueueConnectionFactory;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
Mais cela se passe avec succès lorsque j'utilise javax.jms pur (pas par Camel) comme mentionné dans here. Et cela fonctionne avec succès lorsque j'envoie des messages à mq actif directement (pas à Wildfly Artemis).
SimpleRouteBuilder routeBuilder = new SimpleRouteBuilder();
CamelContext ctx = new DefaultCamelContext();
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://0.0.0.0:61616");
ctx.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
ctx.addRoutes(routeBuilder);
ctx.start();
Thread.sleep(5 * 60 * 1000);
ctx.stop();
Ce que je veux savoir envoie des données à un wildfly intégré Artemis insnatnce et les récupéreront Apache Camel UTILISATION. Quelqu'un peut-il donner un petit conseil à ce sujet?
@ Justin, Merci pour la réponse. Et désolé pour les zones peu claires dans ma question. Dans ce cas, en mentionnant "active mq diretly", il faut envoyer au broker ActiveMQ 5.x autonome. Et oui en mentionnant Wildfly Artemis je voulais dire ActiveMQ Artemis intégré dans Wildfly. – namalfernandolk