系统之间通信工具(rabbitMq)

2017-09-29 17:00

在安装RabbitMQ服务器包时,服务器不会默认启动为守护进程。在系统启动时默认启动守护进程,作为管理员运行: chkconfig rabbitmq-server on

首先下载 php-amqplib

1.启动及关闭

    /sbin/service rabbitmq-server stop/start/etc

2.添加用户操作

    rabbitmqctl add_user rollen root
    rabbitmqctl set_user_tags rollen administrator
    rabbitmqctl set_permissions -p / rollen ".*" ".*" ".*"

3.连接操作需要注意的地方

地址 github

    //基于yii2-queue扩展 就是因为没把queueName,exchangeName 带上,蛋疼了好久。
        'queue' => [
            'class' => \yii\queue\amqp\Queue::class,
            'host' => '192.168.148.129',
            'port' => 5672,
            'user' => 'test',
            'password' => 'root',
            'queueName' => 'msgs',
            'exchangeName'=>'router',
        ],

4.设置配置文件

    cd /etc/rabbitmq
    cp /usr/share/doc/rabbitmq-server-3.4.1/rabbitmq.config.example /etc/rabbitmq/
    mv rabbitmq.config.example rabbitmq.config

5.设置用户访问

vi /etc/rabbitmq/rabbitmq.config
/**
    找到{loopback_users,[]} 将注释去掉
*/

6.开启web管理界面

rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart

7.防火墙开放15672端口

/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
/etc/rc.d/init.d/iptables save

9.使用的时候遇到的坑

关于exchange 和 messageQueue 的介绍

这是在百度上找到的答案,一开始无法理解,后面做过试验,才知道怎么回事
a)消费者是无法订阅或者获取不存在的MessageQueue中信息。

b)消息被Exchange接受以后,如果没有匹配的Queue,则会被丢弃。

解释:主要是b,queue主要是用来存储消息的队列,exchange才是来拿消息的人,和你在声明的时候没有半毛钱关系,并非要监听对应的queue才能拿到消息,只要你的exchange与生产者的exchange对应就ok了,只是之前queue里面的消息(不管是消费的还是未消费的)你都无法接收到,而生产者重新发送消息,这个时候你就可以收到了,这个可以用来做生成者的消息监听(注意:如果你声明的queue与生成者一致,此时两边并不会收到消息,只是rabbit将消息进行了分发)

10.后台运行

    nohup php amqp_consumer.php >> /var/log/test.log 2>&1 &

11. rabbitMq交换器之fanout模式

插入图片
fanout

如图所示,这种类型的交换器会将收到的消息广播到绑定的队列上。消息通信模式很简单:当你发送一条消息到fanout交换器时,他会把消息投递到所有附加在此交换器上的队列。这允许你对单条消息做不同方式的反应。举例来说,一个web应用程序可能需要在用户上传新的图片时,用户相册必须清楚缓存,同事用户应该得到些积分奖励。你可以将两个队列绑定到图片上传交换器上(exchange)。一个用于清楚缓存,另一个用于增加用户积分。从这个场景中你可以了解到,使用交换器、绑定和队列比直接向指定的队列发送消息要有优势。假设应用程序的第一个需求是在图片上传到网站上后,需要清楚用户相册缓存。你可以通过只使用一个队列就能轻易完成。但是当产品负责人让你实现一个新功能,即在上传完成后给用户一点奖励,你该怎么办呢?如果你是直接将消息发送给队列的话,就不得不修改发送的代码,以将消息发送给新的用户积分队列。如果你使用的是fanout交换器的话,你唯一需要做的就是为新的消费写一段代码,然后声明新的队列并将其绑定到fanout交换器上。

总结

由于最近有个项目需要进行系统间的通信,上级选择了rabbitMq,我们也没辙,开始使用吃奶的力气在学习,越到最后发现,这种解耦的方式确实不错,看来还要继续研究研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 来源 RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。支持消息的持久化、事务、拥塞控...
    jiangmo阅读 10,343评论 2 34
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的...
    高广超阅读 6,092评论 3 51
  • 什么叫消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂...
    lijun_m阅读 1,335评论 0 1
  • RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息...
    彩虹之梦阅读 1,082评论 2 1