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中,最终的结果导致这条消息会被丢弃。

JAVA常见面试题-RabbitMQ_第1张图片

你可能感兴趣的:(JAVA常见面试题,java,开发语言,面试)