RabbitMQ应用研究笔记

- 前端应用:

-- 安装Yii2 RabbitMQ Extension: "mikemadisonweb/yii2-rabbitmq": "^1.0",
 
命令行:
运行一个Consumer 监听程序, 举例:
yii rabbitmq-consumer/single import_data
 
运行一个发布程序,举例:
yii rabbitmq-producer/publish import_data 
 
不同应用场景配置:
-- 发布与订阅者模式,不具名queue name,RabbitMQ自会赋名,消息同时转发多个队列
'producers' => [
                'import_data' => [
                    'connection' => 'default',
                    'exchange_options' => [
                        'name' => 'my-exchange',
                        'type' => 'direct',
                    ],
                ],
            ],
 'consumers' => [
'import_data' => [
                    'connection' => 'default',
                    'exchange_options' => [
                        'name' => 'my-exchange',
                        'type' => 'direct',
                        'passive' => false,
                        'declare' => true,
                    ],
                    'queue_options' => [
//                        'name' => '',   // no queue name which means temp queue, in boardcast mode
                        'declare' => true,
                        'auto_delete' => true,  // delete queue when server restart, otherwise will keep it even server restart
                    ],
                    'callback' => console\components\ImportDataConsumer::class,
                ],
]
 
-- 单发布者, 多消费者监听同组(如 msg) 队列,Server将按序轮转发给Consumer (round-robin方式)
 'producers' => [
                'import_data' => [
                    'connection' => 'default',
                    'exchange_options' => [
                        'name' => 'my-exchange',
                        'type' => 'direct',
                    ],
                ],
            ],
            'consumers' => [
                'import_data' => [
                    'connection' => 'default',
                    'exchange_options' => [
                        'name' => 'my-exchange',
                        'type' => 'direct',
                        'passive' => false,
                        'declare' => true,
                    ],
                    'queue_options' => [
                        'name' => 'msgs',
                        'declare' => true,
                        'auto_delete' => true,  // delete queue when server restart, otherwise will keep it even server restart
                    ],
                    'callback' => console\components\ImportDataConsumer::class,
                ],
            ],
 
 -- 单发布者, 消费者监听同组(如 msg) 队列,绑定routing_keys拿消息
 'producers' => [
                'import_data' => [
                    'connection' => 'default',
                    'exchange_options' => [
                        'name' => 'my-exchange',
                        'type' => 'direct',
                    ],
                ],
            ],
            'consumers' => [
                'import_data' => [
                    'connection' => 'default',
                    'exchange_options' => [
                        'name' => 'my-exchange',
                        'type' => 'direct',
                        'passive' => false,
                        'declare' => true,
                    ],
                    'queue_options' => [
                        'name' => 'msgs',
                        'routing_keys' => ['rk1', 'rk2'],
                        'declare' => true,
                        'auto_delete' => true,  // delete queue when server restart, otherwise will keep it even server restart
                    ],
                    'callback' => console\components\ImportDataConsumer::class,
                ],
            ],      
    
      -服务器端安装设置:
       参考 http://www.rabbitmq.com/install-rpm.html 
       chkconfig rabbitmq-server on.
              start and stop the server as usual 
       using /sbin/service  rabbitmq-server stop / start /etc.
 

参考:

Port to Virtual Host Mapping  https://www.rabbitmq.com/mqtt.html 

端口:

4369:epmd,RabbitMQ节点和CLI工具使用的对等发现服务

5672、5671:由不带TLS和带TLS的AMQP 0-9-1和1.0客户端使用

25672:用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。除非确实需要这些端口上的外部连接(例如,群集使用联合身份验证或在子网外部的计算机上使用CLI工具),否则这些端口不应公开。有关详细信息,请参见网络指南。

35672-35682:由CLI工具(Erlang分发客户端端口)用于与节点进行通信,并从动态范围分配(通过服务器分发端口+ 10010计算为服务器分发端口+ 10000)。有关详细信息,请参见网络指南。

15672:HTTP API客户端,管理UI和Rabbitmqadmin (仅在启用管理插件的情况下)

61613、61614:不带TLS和带TLS的STOMP客户端(仅在启用STOMP插件的情况下)

1883、8883 :(不带和带有TLS的MQTT客户端,如果启用了MQTT插件
15674:STOMP-over-WebSockets客户端(仅在启用了Web STOMP插件的情况下)

15675:MQTT-over-WebSockets客户端(仅在启用Web MQTT插件的情况下)

15692:Prometheus指标(仅在启用Prometheus插件的情况下)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bennybi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值