IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> rabbitmq实验(一) -> 正文阅读

[大数据]rabbitmq实验(一)

环境:CentOS7.5

配置:

?准备基础环境:

安装最小化的系统,root密码为redhat

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33?
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.60.130
GATEWAY=192.168.60.2
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl stop NetworkManager && systemctl disable NetworkManager
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# vi /etc/sysconfig/selinux?
SELINUX=disabled
[root@localhost ~]# mkdir /etc/yum.repos.d/bak
[root@localhost ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
[root@localhost ~]# vi /etc/yum.repos.d/iso.repo
[cdrom]
name=cdrom
baseurl=file:///mnt/cdrom
gpgcheck=0
enable=1
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# echo '/dev/cdrom /mnt/cdrom iso9660 defaults 0 0' >>/etc/fstab?
[root@localhost ~]# mount -a
[root@localhost ~]# vi?/etc/yum.repos.d/CentOS-163-Base.repo?
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

[root@localhost ~]# yum repolist
repolist: 26,169
[root@localhost ~]# yum install -y ntp vim net-tools tcpdump strace sysstat iotop pciutils lsof telnet lrzsz dos2unix psmisc tree wget bash-completio
[root@localhost ~]# hostnamectl set-hostname allinone
[root@allinone ~]# vim /etc/hosts
127.0.0.1 ? allinone
::1 ? ? ? ? allinone
[root@localhost ~]# poweroff?

做快照,克隆新的虚拟机

?安装,启动服务

[root@allinone ~]# yum install epel-release -y
[root@allinone ~]# yum -y install rabbitmq-server

[root@allinone ~]# systemctl start rabbitmq-server
[root@allinone ~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

### 修改guest用户密码
[root@allinone ~]# rabbitmqctl change_password guest guest
Changing password for user "guest" ...
...done.

### 开启web管理插件
[root@allinone ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
? mochiweb
? webmachine
? rabbitmq_web_dispatch
? amqp_client
? rabbitmq_management_agent
? rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@allinone ~]# systemctl restart rabbitmq-server

[root@allinone ~]# vim /etc/hosts
127.0.0.1 ??allinone
192.168.60.129 ??allinone

?登录web管理页面:

管理用户及权限:

[root@allinone ~]# rabbitmqctl help
Usage:
rabbitmqctl [-n <node>] [-q] <command> [<command options>]?
[root@allinone ~]# rabbitmqctl add_user tracer redhat
Creating user "tracer" ...
...done.
[root@allinone ~]# rabbitmqctl set_permissions tracer ".*" ".*" ".*"
Setting permissions for user "tracer" in vhost "/" ...
...done.
[root@allinone ~]# rabbitmqctl list_users
Listing users ...
guest?? ?[administrator]
tracer?? ?[]
...done.

RabbitMQ有一个可跟踪所有消息的内置功能,称为Firehose Tracer。开启后,进入系统的所有消息都将复制到amq.rabbitmq.trace这个交换(Exchange)

以下,用脚本抓取消息队列中的消息:

[root@allinone ~]# ll pika-0.10.0.tar.gz?
-rw-r--r-- 1 root root 82642 Jul 27 14:58 pika-0.10.0.tar.gz
[root@allinone ~]# tar -xf pika-0.10.0.tar.gz?
[root@allinone ~]# cd pika-0.10.0/
[root@allinone pika-0.10.0]# python setup.py install
[root@allinone pika-0.10.0]# cd
[root@allinone ~]# vim rmq_trace.py
#!/usr/bin/env python

'''
Maintained at: https://gitlab.com/mweetman/rmq-trace
'''

from __future__ import print_function
import getopt
import json
import sys
import pika


def usage():
? print('Usage: %s OPTIONS' % sys.argv[0])
? print('\nOPTIONS:')
? print(' [-u] (--user) ? ? ?user with permissions on amq.rabbitmq.trace exchange')
? print(' [-p] (--password) ?password for trace user')
? print(' [-t] (--target) ? ?IP RabbitMQ is bound to')
? print(' [-h] (--help) ? ? ?print this message')


def callback(ch, method, properties, body):
? print("[*] routing key: %s\n ? ?node: %s\n ? ?headers: %s\n ? ?body:\n%s\n" % (
? ? ? method.routing_key,
? ? ? properties.headers["node"],
? ? ? properties.headers["routing_keys"],
? ? ? json.loads(body),
? ? ? ))


def main():
? try:
? ? opts, args = getopt.getopt(sys.argv[1:], "u:p:t:h", ["user=", "password=", "target=", "help"])
? except getopt.GetoptError as err:
? ? print(str(err))
? ? usage()
? ? return 1
? for opt, arg in opts:
? ? if opt in ("-u", "--user"):
? ? ? user = arg
? ? elif opt in ("-p", "--password"):
? ? ? password = arg
? ? elif opt in ("-t", "--target"):
? ? ? target = arg
? ? elif opt in ("-h", "--help"):
? ? ? usage()
? ? ? return 0
? ? else:
? ? ? assert False, '<*> unhandled option'
? ? ? return 1

? # set defaults if unspecified
? try:
? ? user
? except:
? ? user = 'guest'
? ? print("> using 'guest' as the username")

? try:
? ? password
? except:
? ? print("> using 'guest' as the password")
? ? password = 'guest'

? try:
? ? target
? except:
? ? target = 'localhost'
? ? print("> connecting to 'localhost'")

? # connect to RabbitMQ
? credentials = pika.PlainCredentials(user, password)
? connection = pika.BlockingConnection(pika.ConnectionParameters(
? ? ? target,
? ? ? 5672,
? ? ? '/',
? ? ? credentials))
? channel = connection.channel()
? queue_name = "firehose"
? result = channel.queue_declare(queue=queue_name, exclusive=False)

? channel.queue_bind(exchange='amq.rabbitmq.trace',
? ? ? ? ? ? ? ? ? ? ?queue=queue_name,
? ? ? ? ? ? ? ? ? ? ?routing_key="#")

? channel.basic_consume(callback,
? ? ? ? ? ? ? ? ? ? ? ? queue=queue_name,
? ? ? ? ? ? ? ? ? ? ? ? no_ack=True)

? channel.start_consuming()

if __name__ == "__main__":
? rc = main()
? exit(rc)
[root@allinone ~]# ./rmq_trace.py -u tracer -p redhat -t 127.0.0.1 >/tmp/rabbit.trace

配置rabbitmqadmin工具

[root@allinone ~]# rabbitmqctl set_user_tags tracer administrator
Setting tags for user "tracer" to [administrator] ...
...done.
[root@allinone ~]# rabbitmqctl list_users
Listing users ...
guest?? ?[administrator]
tracer?? ?[administrator]
...done.
[root@allinone ~]# cat .rabbitmqadmin.conf
[default]
hostname = 127.0.0.1
port = 5672
username = tracer
password = redhat

[root@allinone ~]# chmod +x /var/lib/rabbitmq/mnesia/rabbit@allinone-plugins-expand/rabbitmq_management-3.3.5/priv/www/cli/rabbitmqadmin
[root@allinone ~]# /var/lib/rabbitmq/mnesia/rabbit@allinone-plugins-expand/rabbitmq_management-3.3.5/priv/www/cli/rabbitmqadmin help config
Usage
=====
rabbitmqadmin [options] subcommand

Configuration File
==================
?

用rabbitmqadmin工具创建exchange、queue、message

卡点:rabbitmqadmin命令报错

[root@allinone ~]# ./rabbitmqadmin list users
Traceback (most recent call last):
? File "./rabbitmqadmin", line 943, in <module>
? ? main()
? File "./rabbitmqadmin", line 384, in main
? ? method()
? File "./rabbitmqadmin", line 526, in invoke_list
? ? format_list(self.get(uri), cols, obj_info, self.options)
? File "./rabbitmqadmin", line 407, in get
? ? return self.http("GET", "/api%s" % path, "")
? File "./rabbitmqadmin", line 436, in http
? ? resp = conn.getresponse()
? File "/usr/lib64/python2.7/httplib.py", line 1113, in getresponse
? ? response.begin()
? File "/usr/lib64/python2.7/httplib.py", line 444, in begin
? ? version, status, reason = self._read_status()
? File "/usr/lib64/python2.7/httplib.py", line 400, in _read_status
? ? line = self.fp.readline(_MAXLINE + 1)
? File "/usr/lib64/python2.7/socket.py", line 476, in readline
? ? data = self._sock.recv(self._rbufsize)
socket.error: [Errno 104] Connection reset by peer
?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:53:02  更:2021-07-28 07:54:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 21:17:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码