rabbit原理及项目应用

时间:2022-07-10 02:21:08

1.rabbitMQ是什么?

mq是由erlang语言开发的开源的amqp的实现。

2.rabbitMQ的基本原理是什么?

使用RabbitMQ,首先需要与rabbitMQ的visiu host建立连接,visiu host使用exchange和quence组成,当客户端与visiu host建立连接后,还不能发送命令,

需要创建信道channel,然后通过channel来发送命令command和消息,到了visiu host,exchange和quence之间是通过binding形成绑定的,从而形成一个路由表,

然后通过路由表发送给不同的quence。

3.rabbitMQ的集中使用模式?

一种有6种;分别是:简单模式,工厂模式,发布订阅模式,路由模式,topics路由模式,rpc模式

简单模式:一个生产者,一个消费者,一个消息队列(没有exchange概念)

工厂模式:一个生产者,多个消费者,一个消息队列(没有exchange概念)

exchange的三种类型:fanout,direct,topics

发布订阅模式:一个生产者,多个消费者,一个exchange 类型fanout{广播类型},多个队列;

路由模式:一个生产者,多个消费者,一个exchange 类型direct{定向类型},多个队列;

主题模式:一个生产者,多个消费者,一个exchange类型topic{通配符匹配类型},多个队列;

4.实际项目中使用mq

 <description>rabbitmq 连接服务配置</description>
   <!--链接工厂配置,mq地址,mq用户名,mq密码,虚拟主机-->
    <rabbit:connection-factory id="connectionFactory" addresses="${mq.address}" username="${mq.username}" password="${mq.password}"  virtual-host="/"/>
   <!--管理员    <rabbit:admin connection-factory="connectionFactory"/>
    <!-- mq模板声明,message-converter意思是可以将object类型转化成json传输,也可以将json类型转成object-->
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" message-converter="jsonMessageConverter" /> <!-- 使用jsckson执行消息转化 -->
<bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" /> <!--定义exchange的类型,绑定键和queue,是否自动删除-->
  <rabbit:direct-exchange name="${exchange_name}" auto-delete="false">
  <rabbit:bindings>
   <rabbit:binding key="${routing_key}" queue="${queue_name}"/>
  </rabbit:bindings>
  </rabbit:direct-exchange>
    <!-- 定义queue-->
<!--<rabbit:queue id="queue_id" name="${queue_name}" auto-delete="false" durable="true"/>--> <!-- 配置queue的监听 -->
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener ref="listen_class" queues="${queue_name}"/>
</rabbit:listener-container>
</beans> 生产者:
amqpTemplate.convertAndSend(exchange, roteKey, message);
消费者:
public class SelfListener implements MessageListener { @Override
public void onMessage(Message message) {}
}