为什么要使用像RabbitMQ这样的排队系统

use*_*952 0 queueing rabbitmq

我不是高级程序员,但我已经部署了一段时间的应用程序并开发了小型完整系统.

我开始听说像RabbitMQ这样的排队系统.可能是,我从未开发出任何必须使用排队系统的系统.但是,我担心如果我不使用它,因为我不知道该怎么做.我已经在他们的网站上阅读过RabbitMQ教程,但我不知道为什么我会使用它.我不确定是否有任何这些不能通过传统的编程实现,没有额外的组件和常规数据库或类似的.

有人可以解释为什么我会使用一个小例子的排队系统.我的意思不是一个问候世界的例子,而是一个实际的场景.

非常感谢你的时间

  • R M

rob*_*olf 5

像消息队列这样的中间件的关键用途之一是能够在非同类系统之间发送数据.消息本身可以是很多东西.字符串是不同语言在不同系统上最容易理解的,但对于传输更有意义的数据通常不太有用.因此,JSON和XML非常受欢迎.这些只是结构化的字符串,可以在消费者端以所选语言转换为对象.

其他有用的功能:

  • 在像RabbitMQ这样的MQ系统中(在所有MQ系统中都不是这样),客户端非常好地处理事物的通信方面.
  • 消息可以是异步的.如果消费者关闭,消息将保留,直到消费者重新联机.
  • MQ系统可以设置为不同程度的消息持久性.它们可以在读取后从队列中删除或保留直到被确认.它们可以是持久的,因此即使MQ系统发生故障,消息也不会丢失.

这里有一些可能做作的例子.本地系统上的Java程序希望通过Internet向连接的系统发送消息.本地系统有一个连接到互联网的服务器.除了与MQ的连接之外,一切都被阻止来自互联网.Java程序可以将消息发布到MQ而不需要访问Internet.消息位于队列中,直到外部系统将其拾取.Java程序发布消息,比方说XML,消费者可以是Perl程序.只要他们通过预定义的序列化和反序列化方式了解XML,就可以了.