MQ詳細學習文檔

window版本安裝

http://blog.csdn.net/lmj623565791/article/details/37607165

mq配置:

http://xj84.iteye.com/blog/2069119

spring mvc 集成 MQ

http://blog.csdn.net/molingduzun123/article/details/40795253

 

 

1:先解壓Erlang 安裝otp_win64_20.1 配置環境變量 添加環境變量 ERLANG_HOME = D:\java\erl6.0   Path裏添加路徑  %ERLANG_HOME %\bin;

2:安裝rabbitmq-server-3.6.12  添加變量RABBITMQ_SERVER = D:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.12

Path裏添加路徑  %RABBITMQ_SERVER%\sbin

(注意:安裝時取消勾選安裝爲服務:RabbitMQ Service。(否則後面啓動rabbitmq時會 報:ERROR: node with name "rabbit" already running on XXX的錯誤))

3:安裝rabbitmq消息監控插件

換路徑到C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.12\sbin

運行rabbitmq-plugins enable plugin-name

生成mochiweb

   webmachine

  rabbitmq_mochiweb

  amqp_client

  rabbitmq_management_agent

  rabbitmq_management

4:雙擊D:\java\RabbitMQ Server\rabbitmq_server-3.3.1\sbin\rabbitmq-server.bat,啓動rabbitmq

  1. 輸入http://localhost:15672/,打開消息監控頁面,用戶名密碼都是guest即可
  2. 項目代碼http://www.cnblogs.com/LipeiNet/p/5978276.html

7:發送端:Send.java 連接到RabbitMQ(此時服務需要啓動),發送一條數據,然後退出。

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[] argv) throws java.io.IOException

{

/**

 * 創建連接連接到MabbitMQ

 */

ConnectionFactory factory = new ConnectionFactory();

//設置MabbitMQ所在主機ip或者主機名

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();

 }

}

8:值得注意的是隊列只會在它不存在的時候創建,多次聲明並不會重複創建。信息的內容是字節數組,也就意味着你可以傳遞任何數據。

接收端:Recv.java 不斷等待服務器推送消息,然後在控制檯輸出

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.QueueingConsumer;

 

public class Recv

{

//隊列名稱

private final static String QUEUE_NAME = "hello";

 

public static void main(String[] argv) throws java.io.IOException,

java.lang.InterruptedException

{

//打開連接和創建頻道,與發送端一樣

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)

{

//nextDelivery是一個阻塞方法(內部實現其實是阻塞隊列的take方法)

QueueingConsumer.Delivery delivery = consumer.nextDelivery();

String message = new String(delivery.getBody());

System.out.println(" [x] Received '" + message + "'");

}

 

}

}

 

 

發佈了23 篇原創文章 · 獲贊 10 · 訪問量 4649
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章