91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

rabbitmq總結

發布時間:2020-10-20 06:58:21 來源:網絡 閱讀:438 作者:棲木之地 欄目:大數據

概念

1. Exchange: 交換機,消息發送去往的地方

2. Queue: 隊列,消費消息的地方,exchange會根據自身的類型和routing-key進行消息的分發

3. routing-key:路由地址,queue通過key和exchange進行綁定,當消息指定了routing-key然后發送到exchange時,exchange會根據key綁定的列表推送到queue里面

exchange類型:

生產者發送消息去往的地方,生產者只需要知道exchange名字和routingkey既可以發送消息,剩下的由exchange進行轉發

  1. topic:只有匹配路由的模式的隊列才會收到消息,可以一個路由匹配多個隊列,一對多的關系,發送消息只需要指定routing-key即可
  2. direct:只有精確的隊列才會收到消息,一對一的關系,發送消息時需要指定隊列名
  3. fanout:廣播,此時綁定了該exchange的隊列都會收到消息,會忽略routing-key,發送消息只需要指定exchange

queue:

接收消息的地方,消費者讀取消息的地方,消費者連接到這個隊列進行消息的讀取。

vhost:

虛擬主機,一個虛擬主機可以有多個exchange和queue,他們是隔離獨立的

備份與恢復:

rabbitmq目錄里包含兩種類型的信息
1:元信息metadata,schema,topology,主要是保存exchange,queue,user,vhost等基本信息
2:消息數據信息:停留在隊列里未被消費的消息
配置導入和導出,可以將A服務器的Exchange和Queue導入到B服務器
1:開啟rabbitmq-management插件
2:獲取rabbitmqadmin命令工具:通過wget http://localhost:15672/cli/rabbitmqadmin
3:安裝python
4:python rabbitmqadmin export myrabbit.config -H localhost -P 15672 -u myuser -p mypass
5:配置導入:python rabbitmqadmin import myrabbit.config -H locahost -P 15672 -u myuser -p mypass
6:使用管理端口,不是使用5672端口

集群

每個集群中的節點都是通過傳輸層連接的。所有節點對之間定期交換tick消息來維護連接來檢測連接斷開。
集群搭建:
1:安裝erlang:這個包安裝后足夠支持rabbitmq-server運行
編輯/etc/yum.repos.d/rabbitmq-erlang.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
yum install -y erlang
2:安裝rabbitmq-server:
rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7-1.el7.noarch.rpm
yum install -y rabbitmq-server-3.7.7-1.el7.noarch.rpm
3:啟動服務器:
chkconfig rabbitmq-server on
或者systemctl enable rabbitmq-server
systemctl start rabbitmq-server
查看狀態:rabbitmqctl status
4:啟動后會在/var/lib/rabbitmq下生成一個.erlang.cookie,需要ls -al查看
復制這個文件到其他節點上,需要修改文件的所有者,否則啟動時讀取權限出錯
chown rabbitmq:rabbitmq .erlang.cookie
5:各個節點分別修改/etc/hosts和/etc/hostname
6:重啟后關閉主節點外的各個節點:rabbitmqctl stop_app
7:其他節點加入集群:rabbitmqctl join_cluster rabbit@rabbitmq1
8:啟動各個節點:rabbitmqctl start_app
9:查看集群信息:rabbitmqctl cluster_status
節點停止后可以直接重啟,集群會自動加載

隊列高可用

原理就是創建多一個鏡像隊列,默認,rabbitmq里的隊列的內容位于隊列聲明所在的單個節點上。exchange和binding被認為在所有節點上的。當給隊列做鏡像后,相當于兩個節點有一個隊列的信息,默認是master節點起效果,當master崩潰,slave會自動提升為master,然后處理這個隊列的消息。
隊列鏡像:
1:使用rabbitmqctl set_policy來設置,或者使用UI管理界面來設置
2:開啟UI管理界面:rabbitmq-plugins enable rabbitmq_management
3:重啟服務,然后訪問ip:15672,用戶名密碼都是guest
4:在amind下面,右側policy,添加一個policy,或者使用命令:
rabbitmqctl set_policy mypolicy “myReg”

使用java操作rabbtimq

以direct為例
1:引入依賴

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.6.0</version>
</dependency>

2:生產者:

ConnectionFactory factory = new ConnectionFactory();//創建連接工廠
factory.setHost("localhost");
try (Connection connection = factory.newConnection(); //打開連接
         Channel channel = connection.createChannel()) {  
             channel.queueDeclare(myQueueName, false, false, false, null);  //綁定一個隊列
String message = "Hello World!";
channel.basicPublish("", myQueueName, null, message.getBytes()); 發送消息到隊列里
}

3:消費者:

ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(myQueueName, false, false, false, null);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
        String message = new String(delivery.getBody(), "UTF-8");
        System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长白| 深圳市| 灌南县| 太谷县| 托克托县| 玉门市| 普安县| 天等县| 集贤县| 山西省| 五寨县| 商洛市| 永兴县| 梨树县| 田东县| 思茅市| 涿鹿县| 柳河县| 肇源县| 诸城市| 盐池县| 鹿泉市| 肃南| 九台市| 进贤县| 乳山市| 双辽市| 锡林浩特市| 卢龙县| 高雄市| 江口县| 石首市| 老河口市| 旅游| 磴口县| 思茅市| 徐州市| 丹巴县| 葫芦岛市| 确山县| 华亭县|