天天看點

rabbitmq java demo詳解

補充:做下面的例子前,需要先安裝 rabbitmq-server-3.3.0.exe 伺服器。資源我已經上傳

安裝以後啟動伺服器就可以了

下面文章出自:http://blog.csdn.net/mydreamongo/article/details/8272025 

 請保護正版:

abbitmq是一個在amqp基礎上完整的,可服用的企業消息系統。他遵循mozilla public license 開源協定。

  關于amqp可參考

 rabbitmq是一個消費的代理;通過生産者用戶端生産一個資訊,轉送給消費者用戶端;在這個傳輸過程中,根據你的需要可以經過路由、緩沖、持久化來得到這個消息。

  先通過一個例子開始:通過rabbitmq輸出"hello world!"

rabbitmq java demo詳解

其中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 {  

    private final static string queue_name = "hello";  

    public static void main(string[] args) throws ioexception {  

        connectionfactory factory = new connectionfactory();  

        factory.sethost("localhost");  

        connection connection = factory.newconnection();  

        channel channel = connection.createchannel();  

        channel.queuedeclare(queue_name, false, false, false, null);  

        string message = "hello world!";  

        channel.basicpublish("", queue_name, null, message.getbytes());  

        system.out.println(" [x] sent ‘" + message + "‘");  

        channel.close();  

        connection.close();  

    }  

}  

運作結果如下:

[x] sent ‘hello world!‘  

消費者用戶端接收消息程式如下:

import com.rabbitmq.client.queueingconsumer;  

public class reqv {  

    public static void main(string[] argv) throws exception {  

        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 + "‘");  

        }  

 運作程式得到的結果如下:

[*] waiting for messages. to exit press ctrl+c  

[x] received ‘hello world!‘