Wildfly 10 Artemisインスタンスにデータを送信しようとして、Apache Camelを使用して戻します。 ここでは、これはcamel-jmsコンポーネントを使用して行うことができます。Wildfly 10に埋め込まれたArtemisインスタンスにデータを送信して戻します。Apache Camelを使用してください。
この場合、最初に、これが正常に動作しているかどうかを確認するための簡単な例を作成しました。 ただし、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)
実装:
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();
定数:
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";
輸入:
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;
しかしこれは、hereで説明したように純粋なjavax.jms(Camelではなく)を使用している場合にはうまくいきます。そしてそれは、私がアクティブなmqにメッセージを送るときにはうまくいきます(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();
私はWildfly埋め込まアルテミスinsnatnceにデータを送信している知っているとApacheキャメルを使用したバックそれらを受信したいです。 誰でもこれについて少しヒントを与えることができますか?
@ Justin、ありがとうございました。私の疑問の不明な部分には申し訳ありません。この場合、「active mq diretly」とは、スタンドアロンのActiveMQ 5.xブローカーに送信することを意味します。そして、はい、Wildfly Artemisに言及して、私はWildMyにActiveMQ Artemisを埋め込んでいたことを意味します。 – namalfernandolk