RabbitMQ

Spring集成RabbitMQ-接收消息

2017-08-16  本文已影响98人  Jackie_Zheng

上篇介绍了有关Spring-AMQP发送消息的机制和方法。既然有发送消息,那么就有接收消息,相比发送端只是埋头一通发送,接收端在接收消息的时候要稍稍复杂一些,这边就来说说有关接收消息。

接收消息

接收消息的方式有两种,一种是较为简单的方法,通过同步的方式去poll消息。另外一种是较为复杂的异步接收消息的方式,通过注册监听器根据需要接收消息。

同步接收消息

接收消息的方法有如下这些

image.png

有人会问了,我们接收到的消息不一定都是封装成Message形式的,我们想直接接收我们定义的类形式的消息,有这样的方法么? 有的,下面的这些方法就能实现你们想要的功能

image.png

比较上面的receive的方法,这里返回的是Object对象。
从2.0版本之后,还可以通过ParameterizedTypeReference参数来帮你转成你想要的复杂的消息类型

这还没完,我们还可以通过下面的一些方法实现接收完消息并发回回调消息

image.png

可以通过ReceiveAndReplyCallback封装要返回的消息

当然你也可以根据业务需求将ReceiveAndReplyCallback赋值为null,这时候与方法receive等效

下面就是使用receiveAndReply方法的例子

image.png

异步接收消息

*如果你在实际工作中用到了Spring-AMQP,那么对于上面的同步方式用的应该不多,但是对于即将要介绍的异步方式一定格外亲切熟悉,通过注册一个监听器,当等到消息来的时候,就会回调接口中的回调方法消费消息。

image.png

如果你不想在实现你的业务逻辑时与messaging API有那么死板的绑定,也行,你可以使用适配器模式

image.png

上面说到的容器,实际上我们设置的监听类是需要注册到这个容器上的。下面我们来看看SimpleMessageListenerContainer,当然除了这个还有一个DirectMessageListenerContainer

image.png

指定容器中的监听器的配置,我们可以用非常熟悉的XML的配置方法

image.png

下面是一个较为完整的从ConnectionFactory到container再到listener之间的绑定关系样例代码

image.png

如果您觉得阅读本文对您有帮助,请点一下“喜欢”按钮,您的“喜欢”将是我最大的写作动力!如果您想持续关注我的文章,请扫描二维码,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。

上一篇下一篇

猜你喜欢

热点阅读