RabbitMQ依赖erlang,所以先安装erlang,然后再安装RabbitMQ;


先安装erlang,双击erlang的安装文件即可,然后配置环境变量:
ERLANG_HOME=D:\Program Files\erl7.1
追加到path=%ERLANG_HOME%\bin;


验证erlang是否安装成功, 打开cmd命令窗口,进入erlang的bin路径,输入erl命令,如果出现如下提示,则说明erlang安装成功:


D:\Program Files\erl7.1\bin>erl


Eshell V7.1 (abort with ^G)


再安装RabbitMQ,双击安装文件即可,安装完毕后, 设置环境变量:
RABBITMQ_SERVER=D:\Program Files\RabbitMQ Server\rabbitmq_server-3.5.6
追加到path=%RABBITMQ_SERVER%\sbin;


验证RabbitMQ是否安装成功,在CMD命令窗口输入:


C:\Windows\system32>rabbitmq-service

安装好后,我们进入rabbitMQ安装目录下的sbin目录,在目录下shift+右键打开命令行   【必须要进行这一步,不然中途会发现使用不了,连接不上.使用版本rabbitmq-server-3.7.9.】

使用rabbitmq-plugins.bat enable rabbitmq_management开启网页管理界面,然后重启rabbitMQ

远程连接需要 添加用户,可在网页admin页面添加,,添加之后一定要给权限,不给权限的话还是不行,,详细见【客户端-开始任务完成】

#添加用户

#rabbitmqctl add_vhost vh
#rabbitmqctl add_user test test
#rabbitmqctl set_user_tags test management
#rabbitmqctl set_permissions -p vh test ".*" ".*" ".*"

def start(self):
disconnected = True
while disconnected:
try:
disconnected = False
self.channel.start_consuming() # blocking call
except pika.exceptions.ConnectionClosed: # when connection is lost, e.g. rabbitmq not running
logging.error("Lost connection to rabbitmq service on manager")
disconnected = True
time.sleep(10) # reconnect timer
logging.info("Trying to reconnect...")
self.connect()
self.clear_message_queue() #could this make problems if the manager replies too fast? # 参照文档 https://blog.csdn.net/csdn_am/article/details/79894662

---报错处理【长时间未调用断开处理】---这里使用的是死循环处理,


RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
1:安装RabbitMQ需要先安装Erlang语言开发包。下载地址 http://www.erlang.org/download.html 在win7下安装Erlang最好默认安装。
设置环境变量ERLANG_HOME= C:\Program Files\erlx.x.x
添加到PATH %ERLANG_HOME%\bin; 2:安装RabbitMQ 下载地址 http://www.rabbitmq.com/download.html 安装教程:http://www.rabbitmq.com/install-windows.html
设置环境变量RABBITMQ_SERVER=C:\Program Files\rabbitmq_server-x.x.x。
添加到PATH %RABBITMQ_SERVER%\sbin;
找到环境变量中的path变量:
双击path,在其后面增加:;%RABBITMQ_SERVER%\sbin (注意前面的分号),然后确定即可
现在打开windows命令行(“cmd”),输入rabbitmq-service如果出现如下所示提示,即表示环境变量配置成功。 3:进入%RABBITMQ_SERVER%\sbin 目录以管理员身份运行 rabbitmq-plugins.bat
rabbitmq-plugins.bat enable rabbitmq_management
安装完成之后以管理员身份启动 rabbitmq-service.bat
rabbitmq-service.bat stop
rabbitmq-service.bat install
rabbitmq-service.bat start 4:浏览器访问localhost:55672 默认账号:guest 密码:guest 5. Rabbit还自带监控功能.
cmd进到sbin目录,键入rabbitmq-plugins enable rabbitmq_management启用监控管理,然后重启Rabbitmq服务器。 打开网址http://localhost:55672,用户名和密码都是guest。 6. 现在打开浏览器,输入:http://localhost:15672/ ,如果出现以下页面,则表示服务器配置成功。
默认用户名为guest,密码:guest 如果没有出现以上页面,尝试在windows命令行中输入(以管理员方式运行):
rabbitmq-plugins enable rabbitmq_management
然后运行下面的命令来安装:
rabbitmq-service stop
rabbitmq-service install
rabbitmq-service start


rabbitMQ 生产者工作模式
import pika
1 创建socket
connection = pika.BlockingConnextion(pika.ConnectionParameters('localhost'))
2 声明一个管道
channel = connection.channel()
3 声明queue
channel.queue_declare(queue='hello',durable=True)
durable:声明是持久化的队列,默认是队列存在内在中的,服务崩了之后,是不会恢复的 4 发消息
channel.basic_publish(exchange='',
routing_key='hello', # 队列的名字
body='hello word!' #消息内容
properties=pika.BasicProperties(delivery_mode=2,))
properties #消息持久化,主要语句 delivery_mode
5 发送完毕,关闭队列
connection.close() 消费者工作模式
1 创建socket
connection = pika.BlockingConnextion(pika.ConnectionParameters('localhost'))
2 声明一个管道
channel = connection.channel()
3 声明queue
channel.queue_declare(queue='hello') 4 消费消息
def callback(ch,method,properties,body):
print(' x Received %r'%body)
# ch 就是管道的内存对象地址
# method 就是包含发送信息的列表,
# properties # 消息处理完,需要手动跟服务端确认
# ch.basic_ack(delivery_tag=method.delivery_tag)
#加上下面这个相当于负载匀衡的权重值,处理慢的加上这个
channel.basic_qos(prefetch_count=1) channel.basic_consume(callback, #如果收到消息调用处理,回调函数
queue='hello',#队列的名字 
no_ack=True #消息处理完了,表示不确认,一般不加,处理完了,由客户端来向服务端确认(a_1.basic_ack(delivery_tag=a_2.delivery_tag)
)  ) 5 启动就一直运行,没有消息就阻塞 channel.start_consuming() exchange: 转发器 fanout: 所有bind到此exchange的queue都可以接收消息 direct:通过routingkey和exchange决定的那个唯一的qu eue可以接收消息 topic:所有符合routingKey(此时可以是一个表达式)的r outingKey所bind的queue可以接收消息 headers:通过headers来决定把消息发给哪些queue
import pika
conn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channll = conn.channel()
channll.queue_declare('url',durable=True)
for i in range(1,10):
channll.publish(exchange='',
routing_key='url',
body='https://wh.lianjia.com/ershoufang/pg%s/'%i)
conn.close()

--lianjia_ser----服务端-生成10页__链家

# python 3.7
import pika
import re
import requests,pymysql
credential_s = pika.PlainCredentials('root','liu')
conn = pika.BlockingConnection(pika.ConnectionParameters(host='176.215.44.242',credentials=credential_s))
channel = conn.channel()
channel.queue_declare('url',durable=True) class Lianjia(object):
def __init__(self,static_url=''):
self.headers = {'Host':'wh.lianjia.com',
'Referer': 'https://wh.lianjia.com/ershoufang/',
'Upgrade-Insecure-Requests': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}
if not static_url:
self.static_url='https://wh.lianjia.com/ershoufang/pg%s/'
else:
self.static_url = static_url
self.patten='data-sl="">.*?data-sl="">(.*?)</a>.*?data-log_index=".*?" data-el=".*?">(.*?)</a>(.*?)</div>.*?</span>.*?<a href=".*?" target="_blank">(.*?)</a></div>.*?<.*?</span>.*?<span>(.*?)</span>'
self.conn = pymysql.connect(host='176.215.44.242', user='root', password="liu",
database='test', port=3306, charset='utf8')
self.cur = self.conn.cursor() def get_page(self):
res = requests.get(url=self.static_url,headers=self.headers,proxies={'http':'http://58.53.128.83:3128'})
if res.status_code==200:
self.write_res(res.text) def write_res(self,text):
for i in re.findall(self.patten,text):
a_1 = i[0] # 标题
a_2 = i[1] # 小区名
a_3 = i[2] # 详情
a_4 = i[3] # 位置
a_5 =i[4] #价格
sql = 'insert into lianjia(b_t,x_q_1,x_q_2,w_z,j_g) values(%s,%s,%s,%s,%s)'
self.cur.execute(sql, [a_1, a_2, a_3, a_4, a_5])
self.conn.commit() def callback(a_1,a_2,a_3,body):
print('接收到body',body)
l = Lianjia(static_url=body)
l.get_page()
a_1.basic_ack(delivery_tag=a_2.delivery_tag)
print(body,'完成,') channel.basic_consume(callback,
queue='url'
)
channel.start_consuming()

--lianjia_cli----客户端-开始任务完成就开始下一条

 
fanout:广播模式(其他地方一样)
生产者需要更改的地方:
1 channel.exchange_declare(exchange='logs',
type='fanout')
#定义转发器的名字,在消费端上需要bind 2 channel.basic_publish(exchange='logs',
routing_key='',
body='消息随便来')
消费者需要更改的地方:
1 channel.exchange_declare(exchange='logs',
type='fanout')
2 result = channel.queue_declare(exclusive=True)#排他,唯一的,不指定queue名字,rabbit会随机分配一个名字,exclusive=True会在使用此queue的消费者断开后,自动将queue删除
3 queue_name = result.method.queue#然后使用queue_name来进行操作,然后需要绑定转发器
4 channel.queue_bind(exchange='logs',
queue=queue_name)#绑定 direct :
生产者:
1 channel.exchange_declare(exchange='direct_logs',
type='direct')
2 severity = 'info'|'warning'|'error' #级别
3 channel.basic_publish(exchange='logs',
routing_key=severity,
body='消息随便来')
消费者:
1 severitys = ['info','warning','error']
2 result = channel.queue_declare(exclusive=True)
3 queue_name = result.method.queue
4 for severity in severitys:
channel.queue_bind(exchange='direct_logs',queue=queue_name,routing_key=severity)#循环列表去绑定
topic: '#'是所有都收
生产者:
跟direct基本一样,
1 channel.exchange_declare(exchange='direct_logs',
type='topic')
消费者:
跟direct基本一样,
1 需要更改exchange='topic'

先暂时写到这里吧,下次更新其他模式

rabbit MQ 的环境及命令使用(一)的更多相关文章

  1. Rabbit MQ 学习 (一)Window安装Erlang环境

    之前也没有用过Rabbit MQ ,最近正在学习中,记性不好,特意记一下. 百度一下 先得 安装 Erlang 并且 设置环境变量. 在Erlang 官网去下载,那个慢呀... 还好CSDN 里有人提 ...

  2. windows下的php rabbit mq安装、配置

    http://www.cnblogs.com/shanyou/p/4067250.html 这篇博文写的rabbit mq和erlang的安装以及rabbitmq可视化插件的一些操作 接下去开始安装P ...

  3. celery rabbit mq 详解

    Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...

  4. Spring boot集成Rabbit MQ使用初体验

    Spring boot集成Rabbit MQ使用初体验 1.rabbit mq基本特性 首先介绍一下rabbitMQ的几个特性 Asynchronous Messaging Supports mult ...

  5. 在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  6. (转)在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  7. celery+Rabbit MQ实战记录

    基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...

  8. Rabbit MQ 入门指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  9. Rabbit MQ config文件解析

    Rabbit MQ config文件解析 tcp_listeners:用于监听AMQP连接的端口或主机名/对(不带TLS),默认端口:5672 2.numtcpacceptors :将接受TCP侦听器 ...

随机推荐

  1. java中快速读写图片到BufferedImage对象

    java7读取文件到BufferedImage对象 BufferedImage bufferedImage = ImageIO.read(Files.newInputStream(Paths.get( ...

  2. jQuery BlockUI Plugin Demo 2

    Overview The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without l ...

  3. iOS技术面试02:内存管理

    怎么保证多人开发进行内存泄露的检查. 如何定位内存泄露? 1> 使用Analyze进行代码的静态分析(检测有无潜在的内存泄露) 2> 通过leak检查在程序运行过程中有无内存泄露 3> ...

  4. html转图片网页截屏(三),puppeteer

    puppeteer谷歌出品,是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome. 官方github地址:https://github ...

  5. 批量添加删除Windows server DNS服务 恶意域名 * A记录 指向 127.0.0.1(2019年6月5日更新)

    下载链接:https://pan.baidu.com/s/1OUHyvnIfXYF0PdiT-VRyHw  密码:7gjj 注意!本解决方案在本地的Windows server服务器上把恶意域名指向1 ...

  6. K8S踩坑篇-master节点作为node节点加入集群

    前面我们二进制部署K8S集群时,三台master节点仅仅作为集群管理节点,所以master节点上中并未部署docker.kubelet.kube-proxy等服务.后来我在部署mertics-serv ...

  7. superset的安装(win10)踩踩坑!AWSL

    基本安装参考https://www.jianshu.com/p/8b27ff71429f 按此方案装的时候会遇到各种flask版本不兼容的问题,所以 第一步:装好anaconda 第二部:保证好高于V ...

  8. JS 通过注册表调用启动本地软件

    (关键点:所有软件安装的注册表路径是不会变化的,这个注册表路径需沟通软件商家获取或者通过自己安装在注册表中查找得到) // 调用 注册表编辑类 方法 function run_jxpgj(){//进项 ...

  9. 【转】Linux下查看CPU、内存、磁盘信息

    1.查看CPU信息# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数cat /proc/c ...

  10. AlgorithmMap Dev Log

    Log 2019.08.29 ------------------------------------------------------------------------------------- ...