0

MQ nubee が最初の Java クライアントを作成するのを手伝ってください。Oracle ドキュメントで少し迷ってしまいました。私はOpenMQを稼働させています。OpenMQ 管理コンソールで、「MyFirstTest」という名前のブローカーを確立しました。6 つのサービスのうちの 1 つは「jms」であり (これが最も使いやすいサービスのようです)、このサービスも稼働しています (サービス状態は実行中です)。だから私は興味深い部分に来ます。ブローカー「MyFirstTest」に接続してメッセージを送信し、最後に、おそらく 2 番目のクライアントからこのメッセージを読み取るにはどうすればよいでしょうか。

新しい com.sun.messaging.Queue を使用する代わりに、既存のキューを見つける必要があると思います

例やリンクを歓迎します。

public class HelloWorldMessage {
public static void main(String[] args) {
    try {
        ConnectionFactory myConnFactory;
        Queue myQueue;

        myConnFactory = new com.sun.messaging.ConnectionFactory();
        Connection myConn = myConnFactory.createConnection();
        Session mySess = myConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        myQueue = new com.sun.messaging.Queue("MyFirstTest");

        //Create a message producer.
        MessageProducer myMsgProducer = mySess.createProducer(myQueue);

        //Create and send a message to the queue.
        TextMessage myTextMsg = mySess.createTextMessage();
        myTextMsg.setText("Hello World");
        System.out.println("Sending Message: " + myTextMsg.getText());
        myMsgProducer.send(myTextMsg);

        //Create a message consumer.
        MessageConsumer myMsgConsumer = mySess.createConsumer(myQueue);

        //Start the Connection created in step 3.
        myConn.start();

        //Receive a message from the queue.
        Message msg = myMsgConsumer.receive();

        //Retreive the contents of the message.
        if (msg instanceof TextMessage) {
            TextMessage txtMsg = (TextMessage) msg;
            System.out.println("Read Message: " + txtMsg.getText());
        }

        //Close the session and connection resources.
        mySess.close();
        myConn.close();

    } catch (Exception jmse) {
        System.out.println("Exception occurred : " + jmse.toString());
        jmse.printStackTrace();
    }
}

}

4

1 に答える 1

0
//Assuming server supports multiple clients, your client can look like this:
//Ref: http://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html
//untested code
class client{

 .....
 ....

 private static Socket echoSocket;

 //main can be in another class also
 public static void main(.... args[]){

   client nodeI,nodeII;
   nodeI = new client("speaker/sender");
   nodeII = new client("listener/recvr");
   nodeI.connect2Server();
   nodeI.sendMssgInstr2Server(node);

 }

 public void connect2Server(){

  try {
            echoSocket = new Socket("<jms.srvr.ip>", <port#>);                         
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: <jms.srvr.ip>.");
            System.exit(1);
        } 
 }

 public void sendMssgInstr2Server throws IOException (client RecipientClientNodeII){
   out = new PrintWriter(echoSocket.getOutputStream(), true);
   out.println("sending message:"+mssgQueue.poll() + " =>recipient client is now reading:"+RecipientClientNodeII.receive);
 }

public void receive(){
  try{
      in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); 
       }catch (IOException e) {
            System.err.println("Couldn't get I/O for "+"the connection to: <jms.srvr.ip>.");
            System.exit(1);
     }

  while(1) 
    in.readLine();
 }

//other methods
  .......
  .......

}; //class client ends
于 2012-12-04T16:05:04.557 に答える