| ±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜRabbtMQÊÇʲô£¬RabbitMQ°²×°¼°Æô¶¯¡¢Rabbi
tMQ³£ÓÃÅäÖýéÉÜ¡¢RabbitMQÃüÁî½éÉܼ°web½çÃæ²Ù×÷µÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢RabbtMQ¼ò½é
RabbitMQµÄ¹Ù·½Õ¾
rabbitMQÊÇÒ»¸öÔÚAMQPÐÒé±ê×¼»ù´¡ÉÏÍêÕûµÄ£¬¿É·þÓÃµÄÆóÒµÏûϢϵͳ¡£Ëû×ñÑMozila Public
License¿ªÔ´ÐÒé¡£²ÉÓÃErlangʵÏֵĹ¤Òµ¼¶µÄÏûÏ¢¶ÓÁÐ(MQ)·þÎñÆ÷¡£ 1.1 AMQP AMQP(¸ß¼¶ÏûÏ¢¶ÓÁÐÐÒé)ÊÇÒ»¸öÒì²½ÏûÏ¢´«µÝËùʹÓõÄÓ¦ÓòãÐÒ鹿·¶£¬×÷ΪÏß·²ãÐÒ飬¶ø²»ÊÇAPI
(ÀýÈçJMS)£¬AMQP¿Í»§¶ËÄܹ»ÎÞÊÓÏûÏ¢µÄÀ´Ô´ÈÎÒâ·¢ËͺͽÓÊÜÐÅÏ¢¡£AMQPµÄÔʼÓÃ;ֻÊÇΪ½ðÈÚ½çÌṩ¸ö¿ÉÒԱ˴ËÐ×÷µÄÏûÏ¢ÐÒ飬¶øÏÖÔÚµÄÄ¿±êÔòÊÇΪͨÓÃÏûÏ¢¶ÓÁмܹ¹ÌṩͨÓù¹½¨¹¤¾ß¡£Òò´Ë£¬ÃæÏòÏûÏ¢µÄÖмä¼þ(MOM)
ϵͳ£¬ÀýÈç·¢²¼/¶©ÔĶÓÁУ¬Ã»ÓÐ×÷Ϊ»ù±¾ÔªËØÊµÏÖ¡£·´¶øÍ¨¹ý·¢Ëͼò»¯µÄAMQʵÌ壬Óû§±»¸³ÓèÁ˹¹½¨ÀýÈçÕâЩʵÌåµÄÄÜÁ¦¡£ÕâЩʵÌåÒ²Êǹ淶µÄÒ»²¿·Ö£¬
ÐγÉÁËÔÚÏß·²ãÐÒé¶¥¶ËµÄÒ»¸ö²ã¼¶: AMQPÄ£ÐÍ¡£ Õâ¸öÄ£ÐÍͳÁËÏûϢģʽ£¬ ÖîÈç֮ǰÌáµ½µÄ·¢²¼ÃŶ©ÔÄ£¬¶ÓÁУ¬ÊÂÎñÒÔ¼°Á÷Êý¾Ý£¬²¢ÇÒÌí¼ÓÁ˶îÍâµÄÌØÐÔ£¬ÀýÈç¸üÒ×ÓÚÀ©Õ¹£¬»ùÓÚÄÚÈݵÄ·ÓÉ¡£
1.2 RabbitMQµÄÁ½´óºËÐÄ×é¼þÊÇExchangeºÍQueue¡£ÈçͼËùʾ£º

1. Server (broker):½ÓÊܿͻ§¶Ë£¨Éú²úÕߺÍÏû·ÑÕߣ©Á¬½Ó£¬ÊµÏÖAMQPÏûÏ¢¶ÓÁкÍ·Óɹ¦ÄܵĽø³Ì¡£ 2. Virtual Host:ÆäʵÊÇÒ»¸öÐéÄâ¸ÅÄÀàËÆÓÚȨÏÞ¿ØÖÆ×飬һ¸öVirtual HostÀïÃæ¿ÉÒÔÓÐÈô¸É¸öExchangeºÍQueue,µ«ÊÇȨÏÞ¿ØÖƵÄ×îСÁ£¶ÈÊÇVirtual
Host¡£ 3. Exchange:½ÓÊÜÉú²úÕß·¢Ë͵ÄÏûÏ¢£¬²¢¸ù¾ÝBinding¹æÔò½«ÏûϢ·Óɸø·þÎñÆ÷ÖеĶÓÁС£ExchangeType¾ö¶¨ÁËExchange·ÓÉÏûÏ¢µÄÐÐΪ£¬ÀýÈ磬ÔÚRabbitMQÖУ¬
ExchangeTypeÓÐdirect¡¢Fanout ºÍTopicÈýÖÖ£¬²»Í¬ÀàÐ͵ÄExchange·ÓɵÄÐÐΪÊDz»Ò»ÑùµÄ¡£ 4. Message Queue: ÏûÏ¢¶ÓÁУ¬ÓÃÓÚ´æ´¢»¹Î´±»Ïû·ÑÕßÏû·ÑµÄÏûÏ¢¡£ 5. Message:ÓÉHeaderºÍBody×é³É£¬ HeaderÊÇÓÉÉú²úÕßÌí¼ÓµÄ¸÷ÖÖÊôÐԵļ¯ºÏ£¬°üÀ¨MessageÊÇ·ñ±»³Ö¾Ã»¯¡¢ÓÉÄĸöMessage
Queue½ÓÊÜ¡¢ÓÅÏȼ¶ÊǶàÉٵȡ£¶øBodyÊÇÕæÕýÐèÒª´«ÊäµÄAPPÊý¾Ý¡£ 6.BindingKey:Ëùν°ó¶¨¾ÍÊǽ«Ò»¸öÌØ ¶¨µÄExchange£¨routing-key£©
ºÍÒ»¸öÌØ¶¨µÄQueue£¨Binding-Key£©°ó¶¨ÆðÀ´£¬ °ó¶¨¹Ø¼ü×Ö³ÉΪBindingKey¡£ 1.3 Exchange·ÖÀàÒ»-¹ã²¥Ê½½»»»Æ÷ÀàÐÍ 1.3.1 Fanout Exchange -¹ã²¥Ê½Â·Óɼü¡£ ÄãÖ»ÐèÒª¼òµ¥µÄ½«¶ÓÁа󶨵½½»»»»úÉÏ¡£Ò»¸ö·¢Ë͵½½»»»»úµÄÏûÏ¢¶¼»á±»×ª·¢µ½Óë¸Ã½»»»»ú°ó¶¨µÄËùÓжÓÁÐÉÏ¡£ºÜÏñ×ÓÍø¹ã²¥£¬Ã¿Ì¨×ÓÍøÄÚµÄÖ÷»ú¶¼»ñµÃÁËÒ»·Ý¸´ÖƵÄÏûÏ¢¡£Fanout
½»»»»úת·¢ÏûÏ¢ÊÇ×î¿ìµÄ¡£

QueueÏòºó¶ËµÄ·Ö·¢·½Ê½£º 1.ƽ¾ù·ÖÅäµÄ·½Ê½£¬±ÈÈçQueue1ÓÐ10Ìõmsg£¬Consumer1ºÍConsumer2¸÷»ñµÃ5Ìõ£¬Consumer1×öµÄ¿ì£¬ÒѾ×öÍêÁË£¬¶øConsumer2±È½ÏÂý£¬Ö»×öÁË2Ìõ¡£ÕâÑùConsumer1ºÍConsumer2Ö®¼ä¾ÍûÓеõ½ºÜºÃµÄÀûÓᣠ2.½â¾öÁË1µÄÎÊÌâ¡£Consumer1ºÍConsumer2ÿÈËÏÈ·¢Ò»Ìõ£¬Ë×öÍêÁ˾ÍÏòQueue1·µ»ØACK£¬Queue1ÔÚ¶ÓÁÐÖÐɾ³ýÏàÓ¦µÄmsg¡£È»ºó»á½Ó×ÅQueue1·Ö·¢ÏÂÒ»Ìõmsg¡£ÒÔ´ËÀàÍÆ¡£ 1.3.2 Direct Exchange -Ö±½Ó½»»¥Ê½´¦Àí·Óɼü¡£
ÐèÒª½«Ò»¸ö¶ÓÁа󶨵½½»»»»úÉÏ£¬ÒªÇó¸ÃÏûÏ¢ÓëÒ»¸öÌØ¶¨µÄ·ÓɼüÍêȫƥÅä¡£ÕâÊÇÒ»¸öÍêÕûµÄÆ¥Åä¡£Èç¹ûÒ»¸ö¶ÓÁа󶨵½¸Ã½»»»»úÉÏÒªÇó·Óɼü¡°cat¡±
£¬ÔòÖ»Óб»±ê¼ÇΪ¡°cat"µÄÏûÏ¢²Å±»×ª·¢£¬²»»áת·¢cat.puppy,Ò²²»»áת·¢cat.
guard,Ö»»áת·¢cat¡£

1.3.2 Topic Exchange -Ö÷Ìâʽ½»»»Æ÷¡£
ͨ¹ýÏûÏ¢µÄ·Óɹؼü×ֺͰ󶨹ؼü×ÖµÄģʽƥÅ䣬½«ÏûϢ·Óɵ½±»°ó¶¨µÄ¶ÓÁÐÖС£ÕâÖÖ·ÓÉÆ÷ÀàÐÍ¿ÉÒÔ±»ÓÃÀ´Ö§³Ö¾µäµÄ·¢²¼/¶©ÔÄÏûÏ¢´«ÊäÄ£ÐÍÓÚʹÓÃÖ÷ÌâÃû×Ö¿Õ¼ä×÷ΪÏûϢѰַģʽ£¬½«ÏûÏ¢´«µÝ¸øÄÇЩ²¿·Ö»òÕßÈ«²¿Æ¥ÅäÖ÷ÌâģʽµÄ¶à¸öÏû·ÑÕß¡£Ö÷Ìâ½»»»Æ÷ÀàÐ͵Ť×÷·½Ê½ÈçÏ£º°ó¶¨¹Ø¼ü×ÖÓÃÁã¸ö»ò¶à¸ö±ê¼Ç¹¹³É£¬
ÿһ¸ö±ê¼ÇÖ®¼äÓà ¡°.¡±×Ö·û·Ö¸ô¡£°ó¶¨¹Ø¼ü×Ö±ØÐëÓÃÕâÖÖÐÎʽÃ÷ȷ˵Ã÷£¬²¢Ö§³ÖͨÅä·û£º¡°*¡± Æ¥ÅäÒ»¸ö´Ê×飬¡°#¡±
Áã¸ö»ò¶à¸ö´Ê×é¡£Òò´Ë°ó¶¨¹Ø¼ü×Ö¡°*.cat.#"Æ¥Åä·Óɹؼü×Ö¡°usd.cat"ºÍ"eur.cat.db¡±£¬µ«ÊDz»Æ¥Åä"cat.mysql

¶þ¡¢RabbitMQ°²×°¼°Æô¶¯ rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum install -y rabbitmq-server.noarch
/sbin/rabbitmq-plugins list
/sbin/rabbitmq-plugins enable rabbitmq_management
systemctl start rabbitmq-server.service µÈ¼Û /sbin/rabbitmq-server
start | stop | restart | reload
Èý¡¢Rabbi tMQ³£ÓÃÅäÖýéÉÜ Ò»°ãÇé¿öÏ£¬ RabbitMQµÄĬÈÏÅäÖþÍ×ã¹»ÁË¡£Èç¹ûÏ£ÍûÌØÊâÉèÖõϰ£¬ÓÐÁ½¸ö;¾¶:Ò»¸öÊÇ»·¾³±äÁ¿µÄÅäÖÃÎļþrabbitmq-env.
conf £»Ò»¸öÊÇÅäÖÃÐÅÏ¢µÄÅäÖÃÎļþrabbitmq. config¡£ ×¢Ò⣬ÕâÁ½¸öÎļþĬÈÏÊÇûÓеģ¬Èç¹ûÐèÒª±ØÐë×Ô¼º´´½¨¡£ 1. rabbitmq-env.confÕâ¸öÎļþµÄλÖÃÊÇÈ·¶¨ºÍ²»ÄܸıäµÄ£¬ λÓÚ: /etc/rabbitmqĿ¼ÏÂ
(Õâ¸öĿ¼ÐèÒª×Ô¼º´´½¨)¡£ RABBITMQ_NODE_IP_ADDRESS£ºÖ¸¶¨ipµØÖ· RABBITMQ_NODE_PORT£ºÖ¸¶¨¶Ë¿ÚºÅĬÈÏ5672 RABBITMQ_CONFIG_FILE£ºÅäÖÃÎļþµÄ·¾¶£¬×¢ÒâÅäÖÃÎļþºó׺±ØÐëÊÇconfig RABBITMQ_LOG_BASE£ºÈÕÖ¾Îļþ·¾¶ 2¡¢rabbitm.configÕâÊÇÒ»¸ö±ê×¼µÄerlangÅäÖÃÎļþ¡£Ëü±ØÐë·ûºÏerlangÅäÖÃÎļþµÄ±ê×¼¡£Erlangtuple,½á¹¹Îª{Key,
Value} £¬KeyΪatomÀàÐÍ£¬ValueΪһ¸öterm, ÆäÖм¸¸ö¹Ø¼ü²ÎÊýΪ: 1¡¢tcp_listernersÉèÖÃrabbitmqµÄ¼àÌý¶Ë¿Ú£¬Ä¬ÈÏΪ[5672]. 2¡¢disk_free_limit´ÅÅ̵ÍˮλÏߣ¬Èô´ÅÅÌÈÝÁ¿µÍÓÚÖ¸¶¨ÖµÔòÍ£Ö¹½ÓÊÕÊý¾Ý¡£ 3¡¢vm_memory_high_watermark, ÉèÖÃÄÚ´æµÍˮλÏߣ¬ ÈôµÍÓÚ¸ÃˮλÏߣ¬Ôò¿ªÆôÁ÷¿Ø»úÖÆ£¬Ä¬ÈÏÖµÊÇ0.4.¼´ÄÚ´æ×ÜÁ¿µÄ40%¡£ ËÄ¡¢RabbitMQÃüÁî½éÉܼ°web½çÃæ²Ù×÷
1¡¢rabbitmqctl add_user username password
Ìí¼ÓÓû§¼°ÃÜÂ룻
[root@mage-monitor-01~/] #/sbin/rabbitmqctl
add_user xiaoming
Creating user "xiaoming" ...
...done. |
Ò²¿ÉÒÔÔÚwebÒ³Ãæ²Ù×÷£ºµÇ¼http://10.0.0.201:15672 £¨Äã×Ô¼ºµÄIP£©£¬Óû§guest£¨³¬¼¶Óû§£©£¬ÃÜÂ룺guest


2¡¢rabbitmgctl add_vhost vhostname
´´½¨Vhost£» rabbitmqctl delete_vhost vhostname ɾ³ýVhost£»
[root@mage-monitor-01~/]#/sbin/rabbitmqctl
add_vhost test_linux
Creating vhost "test_linux" ...
...done. |

3¡¢rabbitmqctl set_permissions -p V_host
user ¡°.*¡± ¡°.*¡± ¡°.*¡± °ó¶¨È¨ÏÞ£¬²¢ÇҾ߱¸¶ÁдµÄȨÏÞ£»
[root@mage-monitor-01~/]
#/sbin/rabbitmqctl set_permissions -p test_linux
xiaoming ".*" ".*" ".*"
Setting permissions for user "xiaoming"
in vhost "test_linux" ...
...done. |

4¡¢rabbitmqctl change_password username
newpassword ÐÞ¸ÄÓû§ÃÜÂ룻 /sbin/rabbitmqctl delete_user
<username> ɾ³ýÓû§£»
[root@mage-monitor-01~/]
#/sbin/rabbitmqctl delete_user xiaoming
Deleting user "xiaoming" ...
...done. |
5¡¢rabbitmqctl list_queues ÏÔʾËùÓжÓÁС£
6¡¢rabbitmqctl list_vhosts ±éÀúËùÓÐÐéÄâÖ÷»úÐÅÏ¢£»
|