定義:
消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過寫和檢索出入列隊的針對應用程序的數據(消息)來通信,而無需專用連接來鏈接它們。簡單理解:藍牙配對
jar包依賴:
<!-- 加入mq消息依賴包 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.0.4</version>
</dependency>
方式一:
(發)
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 = "qq"; public static void main(String[] args) throws IOException { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("hostname"); factory.setUsername("username"); factory.setPassword("password"); factory.setPort(5672); 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(); } }
(收)
import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; public class Reqv { private final static String QUEUE_NAME = "qq"; public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setUsername("username"); factory.setPassword("password"); factory.setHost("hostname"); factory.setVirtualHost("/"); factory.setPort(5672); 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 + "'"); } } }
方式二:
(發)
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; public class Send2 { private static final String EXCHANGE_NAME = "qq" ; public static void main (String [] argv) throws java.io.IOException { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("hostname"); factory.setUsername("username"); factory.setPassword("password"); factory.setPort(5672); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.exchangeDeclare(EXCHANGE_NAME,"fanout",true); String message = "hello world"; channel.basicPublish(EXCHANGE_NAME,"",null,message.getBytes()); System.out.println("[x] Sent'" + message + "'"); channel.close(); connection.close(); }
(收)
import java.io.IOException;import com.alibaba.fastjson.JSONObject; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Consumer; import com.rabbitmq.client.DefaultConsumer; import com.rabbitmq.client.Envelope; public class Reqv2 {
private static final String EXCHANGE_NAME = "qq" ;public static void main (String [] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("hostname"); factory.setUsername("username"); factory.setPassword("password"); factory.setPort(5672); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.exchangeDeclare(EXCHANGE_NAME,"fanout",true); String queueName = channel.queueDeclare().getQueue(); channel.queueBind(queueName,EXCHANGE_NAME,""); System.out.println("[*]等待消息。退出按CTRL + C"); Consumer consumer = new DefaultConsumer(channel){ @Override public void handleDelivery (String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body) throws IOException { String message = new String(body,"UTF-8"); System.out.println("[x] Received'" + message + "'"); } }; channel.basicConsume(queueName,true,consumer); } }
參考網址:
http://www.rabbitmq.com/tutorials/tutorial-one-java.html