真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

rabbitmq總結(jié)

概念

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

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

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

exchange類型:

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

創(chuàng)新互聯(lián)建站是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),小程序開發(fā),十載建站對成都石涼亭等多個行業(yè),擁有豐富建站經(jīng)驗。

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

queue:

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

vhost:

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

備份與恢復(fù):

rabbitmq目錄里包含兩種類型的信息
1:元信息metadata,schema,topology,主要是保存exchange,queue,user,vhost等基本信息
2:消息數(shù)據(jù)信息:停留在隊列里未被消費的消息
配置導(dǎo)入和導(dǎo)出,可以將A服務(wù)器的Exchange和Queue導(dǎo)入到B服務(wù)器
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:配置導(dǎo)入:python rabbitmqadmin import myrabbit.config -H locahost -P 15672 -u myuser -p mypass
6:使用管理端口,不是使用5672端口

集群

每個集群中的節(jié)點都是通過傳輸層連接的。所有節(jié)點對之間定期交換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:啟動服務(wù)器:
chkconfig rabbitmq-server on
或者systemctl enable rabbitmq-server
systemctl start rabbitmq-server
查看狀態(tài):rabbitmqctl status
4:啟動后會在/var/lib/rabbitmq下生成一個.erlang.cookie,需要ls -al查看
復(fù)制這個文件到其他節(jié)點上,需要修改文件的所有者,否則啟動時讀取權(quán)限出錯
chown rabbitmq:rabbitmq .erlang.cookie
5:各個節(jié)點分別修改/etc/hosts和/etc/hostname
6:重啟后關(guān)閉主節(jié)點外的各個節(jié)點:rabbitmqctl stop_app
7:其他節(jié)點加入集群:rabbitmqctl join_cluster rabbit@rabbitmq1
8:啟動各個節(jié)點:rabbitmqctl start_app
9:查看集群信息:rabbitmqctl cluster_status
節(jié)點停止后可以直接重啟,集群會自動加載

隊列高可用

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

使用java操作rabbtimq

以direct為例
1:引入依賴


    com.rabbitmq
    amqp-client
    5.6.0

2:生產(chǎn)者:

ConnectionFactory factory = new ConnectionFactory();//創(chuàng)建連接工廠
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()); 發(fā)送消息到隊列里
}

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 -> { });

新聞標(biāo)題:rabbitmq總結(jié)
URL分享:http://weahome.cn/article/gohsci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部