RabbitMq的官方文档翻译(教程1)

2017-11-13  本文已影响0人  katkrazy

Introduction

RabbitMq接收并传递消息,你可以把它当做一个邮局。当你把信件放到邮箱里的时候,你能确定会有邮递员最终会正确递送你的邮件。RabbitMq就是一个邮箱、一个邮局和一个邮递员。

生产者

在RabbitMq里,一个队列就代表一个邮箱。虽然消息流经RbbitMq和你的应用,但是消息只能被存在队列里。队列只会被服务器的内存和磁盘所限制,本质上就是一个大的消息缓冲区。一个队列可以接收多个生产者的消息,也可以被多个消费者所接收。

队列

消费者接收队列里的消息。

消费者

在这个教程中,我们会写两个程序,一个生产者程序,发送一个消息,一个消费者程序,接收消息并把它们打印出来。

发送消息


发送消息

Sending

Send是消息发送者,Recv是消息接受者。

Send.java代码如下

引入类库 设置队列名称

然后我们就可以创建一个连接了。

创建连接

这个连接抽象了套接字连接,负责了协议版本的转换和身份验证,等等。我们用本地机器作为服务器,所以host是localhost,如果我们想要使用其他机器的话,我们可以直接写主机的IP地址或者域名。

然后我们创建一个信道(Channel),也是大部分API调用入口。为了发送消息,我们必须先声明一个队列。

声明队列

声明队列这个操作是幂等的——他只会在不存在的时候被创建。图中的消息内容是一个字节数组,所以你可以想怎么编码都行。

最后,不要忘记关闭信道和连接。

Receiving

消费者从RabbitMq获取消息,不像生产者,我们要保持消费者一直运行,监听消息并且打印出来。

引入类库

DefaultConsumer是一个实现了Consumer接口的类,我们使用它来缓存服务器推给我们的消息。

把队列的名字设置成和生产者相同,然后我们打开连接和信道,然后声明和生产者相同的队列。

消费者具体代码

注意,在消费者里我们也一样的声明了队列,因为,我们可能先于生产者启动消费者,我们想确保在消费消息之前队列存在。

既然是异步的,我们还提供了一个(在我们准备好用消息之前保存消息的)对象形式的回调。

DefaultConsumer子类做的事情

Putting it all together

编译运行略。


翻译自https://www.rabbitmq.com/tutorials/tutorial-one-java.html

上一篇 下一篇

猜你喜欢

热点阅读