网站制作建设飞沐,怎样交换友情链接,wordpress文章缓存清理,建电子商务网站需要多少钱exchange_declare(direct_logs,direct,false,false,false);// 这个是申明交换器#xff0c;如果没有申明就给默认队列的这个交换器#xff0c;而且发送的类型默认是direct)顺序参数名默认值作用1$exchange无交换机名2$type无交换机类型#xff0c;分别有direct、fanout、top…exchange_declare(direct_logs,direct,false,false,false);// 这个是申明交换器如果没有申明就给默认队列的这个交换器而且发送的类型默认是direct)顺序参数名默认值作用1$exchange无交换机名2$type无交换机类型分别有direct、fanout、topic3$passsivefalse只判断不创建(一般用于判断该交换机是否存在)如果你希望查询交换机是否存在而又不想在查询时创建这个交换机设置此为true即可如果交换机不存在,则会抛出一个错误的异常.如果存在则返回NULL4$durablefalse表示了如果MQ服务器重启,这个交换机是否要重新建立(如果设置为true则重启mq该交换机还是存在相当于持久化。)我们的案例代码有点类似于在服务器设立一个数据库内存表,并且每次访问都要判定内存表是否存在.而如果开启了这个属性,则相当于建了一个永久表.以后直接访问即可.不需要每次都判定是否存在.如同访问MYSQL。5$auto_deletetrue无用自动销毁。如果绑定的所有队列都不在使用了.是否自动删除这个交换机.(比如设置为true,它绑定的对列全部被删除后该交换器会被自动删除)6$internalfalse内部交换机.即不允许使用客户端推送消息.MQ内部可以让交换机作为一个队列绑定到另外一个交换机下.想想一下以太网的交换机就是了.所以开启这个属性,表示是一个他直接收其他交换机发来的信息7$nowaitfalse如果为True则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度..应用范围不确定8$argumentsnull额外的一些参数,比如优先级,什么的.需要单独开篇讲9$ticketnull未知queue_declare(queueName, false, true, false, true, false)顺序参数名默认值作用1$queue无队列名.而存在默认值的意思是.你可以创建一个不重复名称的一个临时队列.(交换机没法创建临时的)如获得通道后执行如下代码.2$passsivefalse只判断不创建(判断该队列是否存在) 只查询不创建.如果为true,如果存在这个队列,则会返回队列的信息.如果不存在这个队列..则会抛异常(与交换机不同的是,如果交换机判断存在,则返回NULL,否则异常)3$durablefalse重启重建(持久化)4$exclusivefalse排他队列,如果你希望创建一个队列,并且只有你当前这个程序(或进程)进行消费处理.不希望别的客户端读取到这个队列.用这个方法甚好.而同时如果当进程断开连接.这个队列也会被销毁.不管是否设置了持久化或者自动删除.5$auto_deletetrue自动销毁(当最后一个消费者取消订阅时队列会自动移除对于临时队列只有一个消费服务时适用)6$nowaitfalse执行后不需要等结果7$argumentsnull$arguments new AMQPTable([x-message-ttl 10000, // 延迟时间 (毫秒)创建queue时设置该参数可指定消息在该queue中待多久可根据x-dead-letter-routing-key和x-dead-letter-exchange生成可延迟的。x-expires 26000, // 队列存活时间 如果一个队列开始没有设置存活时间后面又设置是无效的。x-dead-letter-exchange exchange_direct_ttl3, // 延迟结束后指向交换机(死信收容交换机)x-dead-letter-queue queue_ttl3, // 延迟结束后指向队列(死信收容队列),//x-dead-letter-routing-key queue_ttl3, // 设置routing-key//x-max-priority10 //声明优先级队列.表示队列应该支持的最大优先级。建议使用1到10之间.该参数会造成额外的CPU消耗。]);8$ticketnullqueue_bind(queue_delete1, exchange_delete1);参数序号参数名作用1$queue队列名2$exchange交换机名3$routing_key路由名(对应)4$nowait不等待执行结果5$arguments额外参数6$ticket….$message new AMQPMessage(消息内容,[配置项配置值]);配置项类型说明content_type短文本MIME类型表示消息是一种什么类型的格式,参考content_encoding短文本正文传输编码,比如内容是gzip压缩的.值就是gzip,application_headers数组请求的headers信息delivery_mode数字表示是否持久化,1为否,2为是priority数字发送权重,也就是优先级correlation_id短文本相关性IDreply_to短文本消息被发送者处理完后,返回回复时执行的回调(在rpc时会用到)expiration短文本存活时间,毫秒数message_id短文本扩展属性timestamp数字时间戳type短文本扩展属性user_id短文本扩展属性app_id短文本扩展属性cluster_id短文本扩展属性Basic_publish($msg,$exchange,$routing_key)顺序参数名作用1$msg消息对象2$exchange消息对象(交换机名称) 如果没有指定交换器会指定一个默认的交换器第三个参数是路由键当申明一个队列时它会自动绑定到默认交换器并以队列名称作为路由键。那么这段代码会自动发送到hello的队列 (hello队列必须事先申明好)。所以这种消息当有多个进程时会均匀的分给不同的进程处理3$routing_key消息的路由名4$mandatory消息至少有一个队列能够接受,如果交换机无法把消息发送到具体的队列中,是否要把消息发送到失败投递记录中,而不是让其消失(当mandatory标志位设置为true时如果exchange根据自身类型和消息routingKey无法找到一个合适的queue存储消息那么broker会调用basic.return方法将消息返还给生产者;当mandatory设置为false时出现上述情况broker会直接将消息丢弃;通俗的讲mandatory标志告诉broker代理服务器至少将消息route到一个队列中否则就将消息return给发送者;)5$immediate这个是一个被作废的属性.6$ticketfunction接收消息回调($message){$message-delivery_info[channel]-basic_ack($message-delivery_info[delivery_tag]);}代码的意思为,根据消息的delivery_info[channel]找到通道,并调用通道的basic_ack方法发送消息的确认内容.##泄露问题如果我们只是接受了消息,并进行处理.但是处理完后.没有发起ack就会导致服务器上的消息一直堆积.服务器会发送新的消息.同时会记录当前的这个链接有哪些消息一直还没回复.(服务器认为你会回复,一直等待)。如果消费者进程停止掉重启..就会重新接收所有消息$channel-basic_qos(null, 1, null);可告知RabbitMQ只有在consumer处理并确认了上一个message后才分配新的message给他否则上一个没处理完会一直卡在这里这个根据业务场景配置basic_qos注意事项由于消费者自身处理能力有限从rabbitmq获取一定数量的消息后希望rabbitmq不再将队列中的消息推送过来当对消息处理完后(即对消息进行了ack并且有能力处理更多的消息)再接收来自队列的消息这时候我们就需要要到basic_qosbasic_qos($prefetch_size,$prefetch_count, //最重要的参数未确认的消息同时存在的个数;(也就是未ack的消息数我们可以以此来作为记录失败数据的个数)$a_global)prefetch_count在no_askfalse的情况下生效即在自动应答的情况下这两个值是不生效的注意如果我们有两个进程一个设置prefetch_count为1一个没有设置这个这样只会有一个进程会等待确认还有一个不会等待确认这样容易导致不可预知的错误当多个进程设置prefetch_count值时相互之间的数据时没有影响的比如两个进程都设置的是2那么总的未确认存在数是4basic_consume(TestQueue, , false, false, false, false, $callback)顺序参数名默认值作用1queue消息要取得消息的队列名2consumer_tag消费者标签3no_localfalse这个功能属于AMQP的标准,但是rabbitMQ并没有做实现.4no_ackfalse收到消息后,是否不需要回复确认即被认为被消费(在默认情况下消息确认机制是关闭的。现在是时候开启消息确认机制该参数设置为true,并且工作进程处理完消息后发送确认消息。)5exclusivefalse排他消费者,即这个队列只能由一个消费者消费.适用于任务不允许进行并发处理的情况下.比如系统对接6nowaitfalse不返回执行结果,但是如果排他开启的话,则必须需要等待结果的,如果两个一起开就会报错7callbacknull回调函数8ticketnull9argumentsnull