私はこれについて疑問を持っています.Connector-Referenceを使用してActiveMQコネクタを作成しました:
<jms:activemq-connector name="Active_MQ" specification="1.1" brokerURL="tcp://localhost:61616" validateConnections="false" doc:name="Active MQ" >
<reconnect count="5" />
</jms:activemq-connector>
私はJavaから行うことでこれを取得できることを知っています:
Connector amqConnector = eventContext.getMuleContext().getRegistry().lookupConnector("Active_MQ");
しかし、JNDI を使用するのではなく、このコネクタ データを使用してプロデューサーを作成するにはどうすればよいでしょうか。私が読んだすべてのチュートリアルでは、lookup() を実行して JNDI 小道具を取得する InitialContext を使用しています。
また、私の ActiveMQ 構成ファイルでは、キューを作成しています。したがって、キューはすでに作成されています。プロデューサーがそのキューにアクセスするだけで、作成する必要はありません。
そして、私のqueueNameはActiveMQConnectionの「DestinationSource」にありますか? Java から activemq 構成ファイル内のキュー名または情報を取得するにはどうすればよいですか?
///// デビッドの助けの後に追加:
これは私が現在持っているものです:
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
String payload = eventContext.getMessage().getPayloadAsString();
JmsConnector amqConnector = (JmsConnector) eventContext.getMuleContext().getRegistry().lookupConnector("Active_MQ");
ConnectionFactory factory = amqConnector.getConnectionFactory();
Connection connection;
connection = factory.createConnection();
try {
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("ExampleQueue");
MessageProducer producer = session.createProducer(queue);
producer.send(session.createTextMessage(payload), DeliveryMode.NON_PERSISTENT, 0, 5000);
}finally {
connection.close();
}
return eventContext;
}
前もって感謝します、