rabbitMQ小小的入门

首先我们先要知道,什么是消息队列(Message-Queue,MQ)?

消息队列是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入队列的数据(消息)来通信。

消息传递是指程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用彼此通常用于诸如远程过程调用的技术。

排队指的是应用程序通过队列来通信,队列的使用除去了接收和发送应用程序同时执行的需求。


MQ的特点

MQ是生产者-消费者模型的一个典型代表,一端向MQ中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。

MQ是AMQP协议的具体实现和产品。


RabbitMQ的几个概念说明

1,Broker:简单来说就是消息队列服务器的实体。

2,Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。

3,Queue:消息队列载体,每个消息都会被投入到一个或多个队列。

4,Binding:绑定,它的作用就是把Exchange和Queue按照路由规则绑定起来。

5,RoutingKey:路由关键字,Exchange根据这个关键字进行消息投递。

6,producter:消息生产者。

7,consumer:消息消费者。

8,Channel:消息通道,在客户端的每个连接里可简历多个Channel,每个channel待iaoyige会话任务。


以上的内容都来自于百度百科。


安装rabbitMQ-server

我使用的是Ubuntu 13.04

在Ubuntu上安装rabbitMQ需要先安装erlang

sudo apt-get install erlang-nox

然后去官网下载rabbitMQ安装包

http://www.rabbitmq.com/download.html

安装完成后启动rabbitMQ

sudo rabbitmq-server start


java-client包

http://www.rabbitmq.com/java-client.html

下载rabbitmq-java-client-bin-3.1.4.zip


一个简短的小例子:


Sender:

import java.io.IOException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Sender {

	public static final String QUEUE_NAME = "hello";
	public static int i = 1;

	public static void main(String[] args) throws IOException {
		while(true){
			send();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public static void send() throws IOException {
		ConnectionFactory factory = new ConnectionFactory();
		factory.setHost("localhost");
		// create a new broker connection (创建一个新的消息队列服务器实体的连接)
		Connection connection = factory.newConnection();
		// create a new channel (创建一个新的消息读写的通道)
		Channel channel = connection.createChannel();
		// declare a queue (声明一个队列)
		// 参数分别为
		// 1,队列的名字
		// 2,是否为一个持久的队列,持久的队列在服务重新启动的后依然存在
		// 3,如果为true,那么就在此次连接中建立一个独占的队列
		// 4,是否为自动删除
		// 5,队列的一些其他构造参数
		channel.queueDeclare(QUEUE_NAME, false, false, false, null);
		String message = "Hello World" + i;
		channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
		System.out.println("[x]SentMessage : " + message);
		channel.close();
		connection.close();
		i++;
	}
}

Receiver


import java.io.IOException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.ShutdownSignalException;

public class Receiver {
	
	public static final String QUEUE_NAME = "hello";

	public static void main(String[] args) throws IOException,
			ShutdownSignalException, ConsumerCancelledException,
			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");
		QueueingConsumer consumer = new QueueingConsumer(channel);
		channel.basicConsume(QUEUE_NAME, true, consumer);
		while (true) {
			QueueingConsumer.Delivery dilivery = consumer.nextDelivery();
			String message = new String(dilivery.getBody());
			System.out.println("[Receiver]Message is : " + message);
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值