RabbitMQ入门

RabbitMQ入门(3)--发布和订阅

随声附和 提交于 2019-12-24 18:19:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ### 发布和订阅 ###(使用java 客户端) 在先前的指南中,我们创建了一个工作队列。这工作队列后面的假想是每一个任务都被准确的传递给工作者。在这部分我们将会做一些完全不同的事情--我们将一个消息传递给多个消费者。这部分被认知为“发布和订阅”。 为了说明这个部分,我们会建立一个简单德日志系统,它是由两个程序组成--第一个发出日志消息,第二个接收和打印它们。 在我们的日志系统中,每一个运行的接收者拷贝程序将会获得信息。通过这个方式我们可以运行一个接收者,直接的把日志记录到硬盘中;在同一时间我们可以运行另一个接收者,在屏幕上看这些日志。 本质上,发布日志消息等同于广播到所有接收者。 ###交换 在先前指南部分,我们将消息发送到队列里,并从队列中接收消息。现在是时候介绍RabbitMQ中全消息模型。 让我们快速温习下在先前指南中我们掌握的: 一个发送消息的生产者是一个用户程序。 一个存储消息的队列是一个缓冲。 一个接收消息的消费者是一个用户程序。 在RabbitMQ消息模型中核心的思想是生产者从不直接将消息发送给队列。实际上,生产者常常甚至不知道是否一个消息会被传递到队列中。 相反,生产者仅能将消息发送到一个交换机。一个交换机是一个非常简单的事物。在它的一遍,它从生产者那里接收消息,另一边将消息推送到队列中

RabbitMQ入门(2)--工作队列

*爱你&永不变心* 提交于 2019-12-03 09:27:13
### 工作队列 ###(使用Java客户端) 在这第一指南部分,我们写了通过同一命名的队列发送和接受消息。在这一部分,我们将会创建一个工作队列,在多个工作者之间使用分布式时间任务。 工作队列(亦称:任务队列)背后主要的思想是避免立即处理一个资源密集型任务并且不得不一直等待完成。相反我们可以计划着让任务后续执行。我们将任务封装成消息,发送到队列中。一个工作者进程在后台运行,获取任务并最终执行任务。当你运行多个工作者,所有的任务将会被他们所共享。 在web应用程序中,这个理念是特别有用的,你无法在一个短暂的http请求中处理一个复杂的任务。 ### 准备 在先前的指南中,我们发送了一个包含"Hello World!"消息。现在我们将要发送一些字符串,用来代表复杂的任务。我们没有一个真实的任务,比如图片的调整大小或者pdf文件渲染,所以我们通过 Thread.sleep() 函数,伪装一个我们是很忙景象。我们将会把字符串中点的数量来代表它的复杂度;每一个点将要花费一秒的工作。例如,一个使用 Hello... 描述的假任务会发送三秒。 我们将会轻量的修改我们以前例子中 Send.java 代码,使其允许任意的消息可以通过命令行发出。这个程序将要计划安排任务到我们的工作队列中,所以我们把它命名为 NewTask.java : String message = getMessage(argv

rabbitMQ 初探-环境搭建、erlang客户端例子教程

二次信任 提交于 2019-11-29 02:39:11
rabbitMQ 初探-环境搭建、erlang客户端例子教程 1. rabbitMQ简介 rabbitmq起源于Advanced Message Queuing Protocol(AMQP,高级消息队列协议,参见 [ AMQP-wiki ]),AMQP从一开始就设计成为开放标准,以解决众多的消息队列需求和拓扑结构问题。凭借开放,任何人都可以执行这一标准,针对标准编码的任何人都可以和任意AMQP供应商提供的MQ服务器进行交互。AMQP解决分布式环境下的通信问题,而Erlang是最适合实现AMQP代理服务器的语言,因为AMQP展现的就是每一部电话交换机的架构,Erlang是Ericson(爱立信)原本为了电话交换机而开发的编程语言,其分布式编程和健壮的故障恢复的特色特别适合AMQP。由于rabbitmq的核心开发人员使用Erlang写了一个原型测试网络延迟,发现用Erlang编写的分布式计算库和原生socket拥有一样的延迟,于是他们决定起名为Rabbit:兔子行动非常迅速且繁殖疯狂,特别适合分布式软件的命名,也便于记忆。rabbitmq解决了只有少量预算同时也要需要消息通信的问题,解决了应用集成和高强度事务处理负载的问题。如今,很多技术公司和金融公司都在使用rabbitmq, 官方页面 有相当丰富的文档, github 上面也有很多rabbitmq的例子,客户端有各种版本

RabbitMQ入门(1)--介绍

这一生的挚爱 提交于 2019-11-26 10:34:43
**前面声明本文都是 RabbitMQ 的官方指南翻译过来的,由于本人水平有限难免有翻译不当的地方,如发现不对的地方,请联系下我,好及时改正。**好了,正文开始: RabbitMQ 是一个消息代理。这主要的原理十分简单,就是通过接受和转发消息。你可以把它想象成邮局:当你将一个包裹送到邮局,你会相信邮递员先生最终会将邮件送到接件人手上。RabbitMQ就好比一个邮箱,邮局或邮递员。 邮局和RabbitMQ两种主要的不同之处在于,RabbitMQ不处理文件,而是接受,并存储和以二进制形式将消息转发。 RabbitMQ,在消息的传送过程中,我们使用一些标准称呼。 生产过程就像发送过程,发送消息的程序就是一个生产者,我们使用“P”来描述它。 队列是好比邮筒的称呼,它位于RabbitMQ内部,虽然消息流通过RabbitMQ和你的应用程序,但是它们仅仅存储在队列中。一个队列没有范围限制,你可以想存储多少就存储多少,本质上来说它是无限大的缓存。多个生产者可以通过一个队列发送消息,同样多个消费者也可以通同一个消息队列中接收消息。队列是画成这样,名字在它的上面: 消费过程与接收相似,一个消费者通常是一个等着接受消息的程序,我们使用"C"来描述: 注意,那生产者,消费者和代理者不需要一定在一个机器上,事实上,大多数应用程序中,他们并不在一个机器上。 ### "Hello World" ###