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