饮冰三年-人工智能-Python-36MQ消息
1 技术介绍
1.1 解决问题
目前系统之间数据交互大多采用webservice、http等同步阻塞方式实现,这种方式耦合度过高以及并发能力有限,所以一旦被调用方系统不在线或者因事务处理过长会导致调用系统大量阻塞线程,从而降低系统可用性,最终导致系统无法对外提供服务;同时也会产生系统之间业务数据不一致的问题。
为了解决以上问题,采用消息总线(MQ)以实现系统之间解耦、异步调用,原模式下的调用方在MQ中只需要将数据传递到MQ后立即返回,而不依赖于原先的被调用方系统执行情况;原模式下的被调用方在MQ中采用队列异步消费的方式进行数据获取。
1.2 MQ术语解释
Producer:消息生产者,消息发送端
Consumer:消息消费者,消息接收端
Broker:提供MQ服务的组件,即消息队列服务器实体。
VHost:虚拟主机,一般用于区分不同的系统,一个Broker可以创建多个VHost。
Exchange:交换机,根据交换机类型将消息投递至队列,一个VHost可以创建多个Exchange。
Queue:队列,用于存放消息内容。一个Exchange可以创建多个Queue。
2.构建环境
2.1在windows环境下安装rabbitmq,教程如下:
需要值得一提的是:一定要注意erlang的版本和rabbitmq的版本要匹配,切记切记
2.2安装pika模块
python使用rabbitmq服务,可以使用现成的类库pika、txAMQP或者py-amqplib,这里选择了pika。
在命令行中直接使用pip命令:
pip install pika