8.0 第8章 发送异步消息

第8章 发送异步消息

本章内容:
  • 异步化的消息
  • 使用JMS、RabbitMQ和Kafka发送消息
  • 从代理拉取消息
  • 监听消息

在星期五下午4点55分,再有几分钟你就可以开始休假了。现在,你的时间只够开车到机场赶上航班。但是在你离开办公室之前,你需要确定老板和同事了解你目前的工作进展,这样他们就可以在星期一继续完成你留下的工作。不过,你的一些同事已经提前离开过周末去了,而你的老板正在忙于开会。你该怎么办呢?

要想既传达到你的工作状态又能赶上飞机,最有效的方式就是发送一封电子邮件给你的老板和同事,详述工作进展并且承诺给他们寄张明信片。你不知道他们在哪里,也不知道他们什么时候才能真正读到你的邮件。但是你知道,他们终究会回到他们的办公桌旁,阅读你的邮件。而此时,你可能正在赶往机场的路上。

同步通信,比如我们在前面所看到的REST,有它自己的适用场景。不过,对于开发者而言,这种通信方式并不是应用程序之间进行交互的唯一方式。异步消息是一个应用程序向另一个应用程序间接发送消息的一种方式,这种间接性能够为进行通信的应用带来更松散的耦合和更大的可伸缩性。

在本章中,我们将会使用异步消息从Taco Cloud Web站点发送订单信息到一个单独的应用中,这个应用是Taco Cloud的厨房,在这里会烹制taco。我们将会考虑Spring提供的3种异步消息方案:Java消息服务(Java Message Service,JMS)、RabbitMQ和高级消息队列协议(Advanced Message QueueingProtocol)、Apache Kafka。除了基础的发送和接收消息之外,我们还会看一下Spring对消息驱动POJO的支持,它是一种与EJB的消息驱动Bean(Message-Driven Bean,MDB)类似的消息接收方式。