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
- 輸入http://localhost:15672/,打開消息監控頁面,用戶名密碼都是guest即可
- 項目代碼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 + "'");
}
}
}