JAVA常见面试题-RabbitMQ

RabbitMQ数据类型

Map:

如果发送的消息类型是map类型,可以通过SerializationUtils.deserialize方法将消息转换成map类型。

String(含json字符串类型):

RabbitMQ原理

RabbitMQ大致分为生产者、队列、消费者,在实际情况中生产者将消息发送到Exchange(交换器),再通过Banding操作将与队列关联起来。

在绑定(Banding)Exchange(交换器)与Queue(队列)的同时,一般会指定一个routing key,来指定这个消息的路由规则,生产者就可以在发消息给Exchange的同时,指定此消息流向哪里。

RabbitMQ常用的Exchange type有三种:fanout、direct、topic。

fanout:把所有发送到该Exchange的消息投递到所有与它绑定的队列中。

       direct:把消息投递到那些binding key与routing key完全匹配的队列中。

      topic:将消息路由到binding key与routing key模式匹配的队列中。

   注意:

(1)routing key是Channel.Publish是程序告诉exchange这条消息该发送到哪里。

(2)binding key是exchange和queue之间binding的名字。

(3)当routing key和binding key相等时,exchange就知道根据binding key去将这条消息分发到下面的queue中;如果程序中的routing key的值不等于任何一个binding key,那么这条message即使发送至了exchange,由于没有匹配的binding key,所以不能发送到任何一个queue中,最终的结果导致这条消息会被丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waviss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值