1、 rabbitmq简介
rabbitmq是一个消息代理,或者讲是一个消息中间件。主要是用来接收和转发信息的,它是对消息不做任何处理的。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。
用来发送消息的程序我们称为生产者:
用来存储信息的我们称为队列,队列只受到内存和磁盘的限制,是一个大的消息缓存区。生产者可以发送消息到队列中,而消费者从队列中接收消息。
等待接收消息的程序我们称为消费者:
下面图中, “P”是生产者, “C”是消费者,中间的框是队列——代表是消息的缓冲区。
下面我们开始我们的简单程序hello world
2 、sending(生产者)
生产者的代码如下:
1 package rabbitmq.main; 2 3 import java.io.IOException; 4 import java.util.concurrent.TimeoutException; 5 6 import com.rabbitmq.client.Channel; 7 import com.rabbitmq.client.Connection; 8 9 import rabbitmq.utils.ConnectionUtils; 10 11 public class Send { 12 13 private static final String QUEUE_NAME = "rabbitmq_queue"; 14 public static void main(String[] args) throws IOException, TimeoutException { 15 //获取一个连接 16 Connection connection = ConnectionUtils.getConnection(); 17 //从连接中获取一个通道 18 Channel channel = connection.createChannel(); 19 //创建队列 20 channel.queueDeclare(QUEUE_NAME, false, false, false, null); 21 String message = "hello world"; 22 //往队列里发送消息 23 channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); 24 System.out.println(" [x] Sent '" + message + "'"); 25 //关闭通道 26 channel.close(); 27 //关闭连接 28 connection.close(); 29 } 30 }