2016-08-15 64 views
2

我正嘗試在Java中創建一個簡單的AMQP應用程序。應用程序應該簡單地在兩個客戶端之間反彈一個數字。每次收到號碼時,客戶端都應該爲其添加1並將其發回給其他客戶端。但是,我無法得到這個例子。我可以發送第一個號碼,但從未收到。在代理的web界面中,我看到零連接和消息。我做錯了什麼,但無法弄清楚它是什麼。希望這裏有人能夠發現錯誤。以下是我寫的代碼。無法讓Java QPID正常工作

Messenger mng = Proton.messenger(); 
    mng.start(); 
    mng.subscribe("localhost:5672"); 

    Message msg = Proton.message(); 
    msg.setAddress("localhost:5672"); 
    msg.setSubject("foobar"); 


    if (args.length > 2 && args[2].equals("foo")) 
    { 
     System.out.println("Sending initial: 1"); 
     msg.setBody(new AmqpValue("1")); 
     mng.put(msg); 
     mng.send(); 
     System.out.println("Sent initial: 1"); 
    } 


    try 
    { 
     while (true) 
     { 
      mng.recv(1); 
      while(mng.incoming() > 0) { 
       Message message = mng.get(); 
       int consumed = Integer.parseInt(message.getBody().toString()); 
       System.out.println("Received: " + consumed); 
       consumed = consumed % 100; 
       if (consumed == 0) 
       { 
        long seconds = (System.currentTimeMillis() - start)/1000; 
        start = System.currentTimeMillis(); 
        System.out.println("Last hundred messages took (s): " + seconds); 
       } 

       msg.setBody(new AmqpValue(""+(consumed+1))); 
       mng.put(msg); 
       mng.send(); 
      } 
     } 
    } 
    catch (Exception e) 
    { 
     System.out.println("proton error: " + e.getMessage()); 
    } 

回答

0

嗯,我完全關閉我的防火牆,並改變了代碼一點傾聽並訂閱我的本地IP地址和工作很適合我:

Messenger mng = Proton.messenger(); 
mng.start(); 
mng.subscribe("amqp://~xxx.xxx.xxx.xxx"); 

Message msg = Proton.message(); 
msg.setAddress("amqp://yyy.yyy.yyy.yyy"); 
....