這里是一個簡單的helloworld測試。
這里在eclipse平台中實現
細節不再贅述。重點是導入rabbitmq-java-client的jar包 下載地址:http://www.rabbitmq.com/releases/rabbitmq-java-client/v3.1.5/rabbitmq-java-client-bin-3.1.5.zip
將里面的jar包全部導入工程中。如下:
接下來先看生產者的代碼:
package rabbitmq; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; public class Send { private final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws java.io.IOException { /** * 創建連接連接到MabbitMQ */ ConnectionFactory factory = new ConnectionFactory(); // 設置MabbitMQ所在主機ip或者主機名 factory.setHost("123.206.216.31"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("admin"); // 創建一個連接 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(); } }
消費者的代碼:
package rabbitmq; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import java.io.IOException; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Consumer; import com.rabbitmq.client.DefaultConsumer; import com.rabbitmq.client.Envelope; import com.rabbitmq.client.QueueingConsumer; public class Recv { private final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws java.io.IOException, java.lang.InterruptedException { // TODO Auto-generated method stub ConnectionFactory factory = new ConnectionFactory(); factory.setHost("123.206.216.31"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("admin"); // 打開連接和創建頻道,與發送端一樣 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 + "'"); } } }
不是一次性通過的。端口號搞錯了。應該是5672 寫成了15672。
為什么寫成15672是因為我在web登錄時用的是這個端口號。后來經過百度得到
默認安裝的Rabbit MQ 監聽端口是5672 下面是官網查到的:
當然也會有其他類型的錯誤,用戶權限在rabbitmq安裝的時候沒有配置好。注意一下
最后貼一下運行結果: