0

私はこれについて疑問を持っています.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;
    }

前もって感謝します、

4

1 に答える 1