非常感謝 http://wubin850219.iteye.com/blog/1002932
rabbitMQ是一個在AMQP基礎上完整的,可服用的企業消息系統。他遵循Mozilla Public License 開源協議。
關于amqp可參考http://www.oschina.net/p/rabbitmq/
rabbitmq是一個消費的代理;通過生產者客戶端生產一個信息,轉送給消費者客戶端;在這個傳輸過程中,根據你的需要可以經過路由、緩沖、持久化來得到這個消息。
先通過一個例子開始:通過rabbitmq輸出"Hello World!"

其中P代表生產者、C表示消費者、中間紅色部分代表消息隊列
生產者客戶端的發送消息程序如下:
java代碼
 package com.abin.test;    import java.io.IOException;    import com.rabbitmq.client.Channel;  import com.rabbitmq.client.Connection;  import com.rabbitmq.client.ConnectionFactory;    public class Send {      運行結果如下:Java代碼
package com.abin.test;    import java.io.IOException;    import com.rabbitmq.client.Channel;  import com.rabbitmq.client.Connection;  import com.rabbitmq.client.ConnectionFactory;    public class Send {      運行結果如下:Java代碼   [x] Sent 'Hello World!'
[x] Sent 'Hello World!'  
消費者客戶端接收消息程序如下:
Java代碼
 package com.abin.test;    import com.rabbitmq.client.Channel;  import com.rabbitmq.client.Connection;  import com.rabbitmq.client.ConnectionFactory;  import com.rabbitmq.client.QueueingConsumer;    public class Reqv {      private final static String QUEUE_NAME = "hello";        public static void main(String[] argv) throws Exception {            ConnectionFactory factory = new ConnectionFactory();          factory.setHost("localhost");          Connection connection = factory.newConnection();          Channel channel = connection.createChannel();            channel.queueDeclare(QUEUE_NAME, false, false, false, null);          System.out.println(" [*] Waiting for messages. To exit press CTRL+C");            QueueingConsumer consumer = new QueueingConsumer(channel);          channel.basicConsume(QUEUE_NAME, true, consumer);            while (true) {              QueueingConsumer.Delivery delivery = consumer.nextDelivery();              String message = new String(delivery.getBody());              System.out.println(" [x] Received '" + message + "'");          }      }  }
package com.abin.test;    import com.rabbitmq.client.Channel;  import com.rabbitmq.client.Connection;  import com.rabbitmq.client.ConnectionFactory;  import com.rabbitmq.client.QueueingConsumer;    public class Reqv {      private final static String QUEUE_NAME = "hello";        public static void main(String[] argv) throws Exception {            ConnectionFactory factory = new ConnectionFactory();          factory.setHost("localhost");          Connection connection = factory.newConnection();          Channel channel = connection.createChannel();            channel.queueDeclare(QUEUE_NAME, false, false, false, null);          System.out.println(" [*] Waiting for messages. To exit press CTRL+C");            QueueingConsumer consumer = new QueueingConsumer(channel);          channel.basicConsume(QUEUE_NAME, true, consumer);            while (true) {              QueueingConsumer.Delivery delivery = consumer.nextDelivery();              String message = new String(delivery.getBody());              System.out.println(" [x] Received '" + message + "'");          }      }  }  運行程序得到的結果如下:
Java代碼 [*] Waiting for messages. To exit press CTRL+C  [x] Received 'Hello World!'
[*] Waiting for messages. To exit press CTRL+C  [x] Received 'Hello World!'  如果消費者出現“[x] Received 'Hello World!'”說明已接收到此消息信息。
新聞熱點
疑難解答