1

私はActiveMQの初心者です。私のメインは次のようになります。

public static void main(String[] args) throws Exception {

        BrokerService broker = new BrokerService();

        if(isProducer(args)){
            broker.addConnector("tcp://localhost:8001");

            broker.start();
            // start producer...
        }
        else{
            broker.addConnector("tcp://localhost:9000"); 
            broker.addNetworkConnector("static:(tcp://localhost:8001)");

            broker.start(); // Getting stuck here!!!
            // start consumer
        }

        waitForever();

}

私はこのアプリケーションを2回起動します。1回はプロデューサーとして、もう1回はコンシューマーとして起動します。コンシューマーを起動すると、broker.start()行でスタックします。

何が足りないの?

4

1 に答える 1

4

基本的に、ブローカーを1回起動します(jvmに埋め込みます)。

BrokerService broker = new BrokerService();
broker.setUseJmx(true);
broker.addConnector("tcp://localhost:61616");
broker.start();

次に、ブローカーに接続します(このコードはコンシューマーアプリケーションとプロデューサーアプリケーションの両方で必要です)。

url = "vm://localhost:61616"    //if you are in same jvm
url2 = "tcp://localhost:61616"   //if you are in diff jvm or other host
connectionFactory = new ActiveMQConnectionFactory(username,password,url);
connection = (ActiveMQConnection) connectionFactory.createConnection();
connection.start();
session = connection.createSession(transacted, ackMode);

次に、消費者を設定します

Destination queue = session.createQueue("queuename");
MessageConsumer consumer = session.createConsumer(queue);
consumer.setMessageListener(new MessageConsumer());

プロデューサーを設定してメッセージを送信する

MessageProducer producer = session.createProducer(queue);
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setObject(object);
producer.send(objectMessage);

たとえば、http://jmsexample.zcage.com/index2.htmlを見てください。

またはhttp://svn.apache.org/repos/asf/activemq/branches/activemq-5.6/assembly/src/release/example/src/

于 2012-10-29T19:01:50.790 に答える