五、RabbitMQ - PHP 操作 RabbitMQ - (topic)主题模式

作者: 温新

分类: 【PHP RabbitMQ】

阅读: 883

时间: 2023-02-27 07:36:56

hi,我是温新,一名 PHPer

版本:erlang-25.2.1、rabbitmq_server-3.11.9

系统版本:Rocky Linux 9.1

学习目标:PHP 操作 RabbitMQ 之主题模式

本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!

主题交换机

发送到主题交换机的路由键必须是一个以 . 分隔开的词语列表。如users.iduser.age

绑定键也必须拥有同样的格式。主题交换机背后的逻辑跟直连交换机很相似 —— 一个携带着特定路由键的消息会被主题交换机投递给绑定键与之想匹配的队列。但是它的绑定键和路由键有两个特殊应用方式:

* (星号) 用来表示一个单词.

# (井号) 用来表示任意数量(零个或多个)单词。

3-6 主题模式.jpg

主题交换机

主题交换机是很强大的,它可以表现出跟其他交换机类似的行为

当一个队列的绑定键为 "#"(井号) 的时候,这个队列将会无视消息的路由键,接收所有的消息。

* (星号) 和 # (井号) 这两个特殊字符都未在绑定键中出现的时候,此时主题交换机就拥有的直连交换机的行为。

生产者

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 主题模式</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">public</span> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">function</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">topicMq</span>()</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 固定.格式,用户后续消费者匹配使用</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// user.info、user.error</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$routingKey</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">request</span>()<span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">input</span>(<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'mode'</span>) <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">??</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'user.info'</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 主题模式</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$this</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">exchange_declare</span>(<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'topic-logs'</span>, <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'topic'</span>,<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$msg</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">new</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">AMQPMessage</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$routingKey</span>, [<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'delivery_mode'</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=></span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">AMQPMessage</span>::<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">DELIVERY_MODE_PERSISTENT</span>]);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$this</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">basic_publish</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$msg</span>, <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'topic-logs'</span>, <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$routingKey</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$this</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">close</span>();</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$this</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">mqConnection</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">close</span>();</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

消费者

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important"><?</span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">namespace</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">App\Console\Commands</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">use</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">Illuminate\Console\Command</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">use</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">PhpAmqpLib\Connection\AMQPStreamConnection</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">class</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">TopicMq</span> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">extends</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">Command</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">protected</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$signature</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'mq:topic {mode?}'</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">protected</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$description</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'Command description'</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">public</span> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">function</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">handle</span>(): <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">void</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 接收参数参数用于匹配</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$logMode</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$this</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">argument</span>(<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'mode'</span>) <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">??</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'#'</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$connection</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">new</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">AMQPStreamConnection</span>(<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'localhost'</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">5672</span>, <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'test'</span>, <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'123456'</span>, <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'sms'</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$connection</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">channel</span>();</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">exchange_declare</span>(<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'topic-logs'</span>,<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'topic'</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>,<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>,<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">list</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$queueName</span>, ,) <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">queue_declare</span>(<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">""</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">queue_bind</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$queueName</span>, <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'topic-logs'</span>, <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$logMode</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$callback</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">function</span> (<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$msg</span>) {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">            <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">echo</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'输出: '</span> . <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$msg</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">body</span> . <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">PHP_EOL</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">            <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$msg</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">ack</span>();</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        };</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">basic_qos</span>(<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">null</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">1</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">null</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">basic_consume</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$queueName</span>,<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">''</span>, <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>,<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>,<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>,<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</span>,<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$callback</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">while</span> (<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">is_open</span>())</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">            <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">wait</span>();</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$channel</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">close</span>();</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$connection</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">-></span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">close</span>();</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

使用

生产者

创建三个不同等级的日志模式

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.error</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.info</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.warn</span></span>

消费者

1、使用 # 匹配,# 会接收所有日志

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 消费者</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">artisan</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">mq</span>:<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">topic</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"#"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    </span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 生产者</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.error</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.info</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.warn</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 消费者输出结果</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">artisan</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">mq</span>:<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">topic</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"#"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">输出:</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">user</span>.<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">error</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">输出:</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">user</span>.<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">info</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">输出:</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">user</span>.<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">warn</span></span>

2、使用 *.error ,只匹配 后缀为 error 的消息

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 消费者</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">artisan</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">mq</span>:<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">topic</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"*.error"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    </span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 生产者</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.info</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.error</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 消费者输出结果</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">artisan</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">mq</span>:<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">topic</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"*.error"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">输出:</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">user</span>.<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">error</span></span>

3、使用 devices.* ,只接收 devices 开头的队列消息

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 消费者</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">artisan</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">mq</span>:<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">topic</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"devices.*"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    </span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 生产者</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=devices.info</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">curl</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">http</span>:<span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">//la10test.test/mq/topic?mode=user.error</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 消费者输出结果</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">artisan</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">mq</span>:<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">topic</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"devices.*"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">输出:</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">devices</span>.<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">info</span></span>
请登录后再评论