有时候,我们需要检查一列数据是否按顺序排列。 如下图1所示。 图1 很显然,单元格区域B2:B8中的数据是按升序排列的,而单元格区域D2:D8中的数据则没有按顺序排列。...那么,如何使用公式来判断它们是否排序了呢?可以使用数组公式。 对于单元格区域B2:B8,使用数组公式: =AND(B2:B7<=B3:B8) 结果为True,如下图2所示,表明该列数据按升序排列。...B2<=B3 B3<=B4 … B7<=B8 得到数组: {TRUE;TRUE;TRUE;TRUE;TRUE;TRUE} 传递到AND函数中,结果为: TRUE 同样,如果要判断单元格区域D2:D8是否已按顺序排列
标签:VBA,Dir函数,MkDir语句 在使用VBA操作文件时,如果不先核实要操作的文件夹是否已存在,则有可能会导致代码出错。例如,在创建文件夹时、在到指定的文件夹中获取文件时。...因此,我们需要先使用代码判断是否已存在相应的文件夹。 创建文件夹时要执行的代码是使用Dir函数和MkDir函数。如果文件夹已存在,Dir函数将生成null结果。...Dir(str, vbDirectory) If fol = "" Then MkDir "C:\MyFiles\" & Range("A" & i) Next i End Sub 在上面的示例中,需要检查
环境准备 2.1. ip配置 三台已装好mq的主机 node1: 192.168.176.3 mq1 master 主节点 node2: 192.168.176.4 mq2 repl1...在mq2和mq3中查看hosts文件,检查是否发生变化 ? 2.3. 检查mq服务 systemctl status rabbitmq-server ? 注意:3台主机都要启动mq服务 2.4....配置集群 3.1 关闭mq服务 关闭三台主机的mq服务 systemctl stop rabbitmq-server 检查mq服务状态,确保已经关闭 systemctl status rabbitmq-server...查看cookie是否一致 ? ? ?...rabbitmqctl join_cluster rabbit@mq1 ? 3.6 从节点启动mq服务 rabbitmqctl start_app ?
本次结合着B站某MQ视频以及最近在MQ上的实践聊一聊个人在使用rabbitMQ中所得。...在本章开始前,默认您已通过各种途径安装并在springboot中集成了rabbitMQ~ 一.是否需要在配置类中定义exchange、queue、routingKey及绑定关系 这个问题我先不表结论,先看一下如果没有定义会出现什么问题吧...,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效 // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除...的配置例子,看起来非常好,可以添加非常多的默认参数,配置无误之后启动即可看到starter已经贴心的为我们创建好了所需的一切: 这种通用配置方法稍显麻烦不过也足够精细,同时你每次启动时starter都会检查是否有创建这些配置...最后 基于个人MQ的实践,总结如下: 1.建议先(手动)定义再使用 2.配置能简化应尽量简化 3.一定要弄清楚所使用mq的工作流程再行测试开发(重要) 顺带给下我的配置: # rabbitMQ ## 配置
使用谷歌浏览器的时候,经常看见图中的提示,大致意思是: 你的密码被外泄,建议你立即检查和修改密码。 只要你不修改密码,这个弹窗就会不停地弹出来提示你。 那么怎么关闭这个弹窗呢?...第二个方法,就是关闭提示。如果你的账号不重要,完全不需要修改密码,那就可以这么办: 打开:设置 -> 隐私设置和安全性,然后点安全。...往下滑动,关闭“当密码遭遇数据泄露时,发送警告”这个开关,提示就不会再出现了。
环境: IP地址 主机名 操作系统 防火墙和SELinux 用途 192.168.100.143 mq01 CentOS7.4(64位) 关闭 磁盘节点 192.168.100.144 mq02 CentOS7.4...(64位) 关闭 内存节点 192.168.100.145 mq03 CentOS7.4(64位) 关闭 内存节点 注意,这里三台服务器都连接上互联网,另外RabbitMQ集群节点必须在同一网段里,如果是跨广域网...--ram rabbit@mq01 //加入到磁盘节点 rabbitmqctl start_app //启动rabbit应用 (1)默认rabbitmq启动后是磁盘节点,在这个cluster...4.做破坏性测试 (1)将mq01节点的服务关闭,再通过mq02和mq03查看消息记录是否还存在。...(2)再将mq02节点的服务关闭,通过mq03查看消息记录是否还存在。
几乎处于不可控的状态,但是确实人家是开源的,比较稳定的支持,活跃度也高; 不过现在确实越来越多的公司会去用 RocketMQ,确实很不错,毕竟是阿里出品,但社区可能有突然黄掉的风险(目前 RocketMQ 已捐给...Kafka(消费者offset没来得及提交导致重复消费) 生成者不重复发送消息到MQ mq内部可以为每条消息生成一个全局唯一、与业务无关的消息id,当mq接收到消息时,会先根据该id判断消息是否重复发送...,mq再决定是否接收该消息。...方案:关闭掉Rabbit MQ的自动ACK机制。 Kafka消息丢失的情况 消费者弄丢了消息 消费者自动提交了offset,其实消息还没有处理完。和Rabbit MQ情况差不多。...解决方案:关闭自动提交offset,手动提交offset。
只需要简单的将队列绑定到交换机上 发送到交换机的消息都会被转发到与该交换机绑定的所有队列上 Fanout交换机转发消息是最快的 代码实现 消费者1 package com.dance.redis.mq.rabbit.fanout...; import com.dance.redis.mq.rabbit.RabbitMQHelper; import com.rabbitmq.client.*; import java.io.IOException...channel.close(); RabbitMQHelper.closeConnection(); } } 消费者2 package com.dance.redis.mq.rabbit.fanout...; import com.dance.redis.mq.rabbit.RabbitMQHelper; import com.rabbitmq.client.*; import java.io.IOException...channel.close(); RabbitMQHelper.closeConnection(); } } 生产者 package com.dance.redis.mq.rabbit.fanout
实际上,生产者通常甚至不知道消息是否会被传递到任何队列。 相反,生产者只能向Exchange发送消息。Exchange所做的工作非常简单。一方面,它接收来自生产者的消息,另一方面将它们推送到队列。...(忽略路由键routingKey) 生产者 - 发布者 package com.futao.springmvcdemo.mq.rabbit.ps; import com.futao.springmvcdemo.mq.rabbit.ExchangeTypeEnum...; import com.futao.springmvcdemo.mq.rabbit.ExchangeTypeEnum; import com.futao.springmvcdemo.mq.rabbit.RabbitMqConnectionTools...getDeliveryTag(), false); try { Thread.sleep(1000); } catch (Exception e) { } }); //关闭自动应答...; import com.futao.springmvcdemo.mq.rabbit.ExchangeTypeEnum; import com.futao.springmvcdemo.mq.rabbit.RabbitMqConnectionTools
生产者 package com.futao.springmvcdemo.mq.rabbit.workqueue; import com.futao.springmvcdemo.mq.rabbit.RabbitMqConnectionTools...; import com.futao.springmvcdemo.mq.rabbit.RabbitMqQueueEnum; import com.rabbitmq.client.Channel;...; import com.futao.springmvcdemo.mq.rabbit.RabbitMqConnectionTools; import com.futao.springmvcdemo.mq.rabbit.RabbitMqQueueEnum...; import com.futao.springmvcdemo.mq.rabbit.RabbitMqConnectionTools; import com.futao.springmvcdemo.mq.rabbit.RabbitMqQueueEnum...此时是公平队列 注意: 定义队列的时候,设置是否开启消息的持久化(该设置需要同时在生产者和消费者设置) //开启持久化消息 boolean durable = true;
为了方便操作,先把防火墙干掉,生产环境当然不能这么干,个人学习随意,以下是相关命令: centos7关闭并禁止防火墙启动命令: systemctl stop firewalld systemctl...在mq-rabbit-provider项目的application.properties文件添加以下属性: #确认消息已发送到交换机(Exchange) spring.rabbitmq.publisher-confirms...=true #确认消息已发送到队列(Queue) spring.rabbitmq.publisher-returns=true 在mq-rabbit-provider项目创建配置类RabbitConfig.java...multiple:是否批量. true:将一次性拒绝所有小于deliveryTag的消息。 requeue:是否重新入队列。...requeue:被拒绝的是否重新入队列。
// 设置连接MQ虚拟主机 connectionFactory.setVirtualHost("/test"); // 设置连接MQ虚拟主机的用户名密码...; * 参数3:队列特性-是否独占队列; * 参数4:队列特性-是否队列完成后自动删除队列; * 参数5:额外附加参数 */...*/ channel.basicPublish("", "HelloWorld", null, "Hello RabbitMQ".getBytes()); // 连接关闭...(5672); //设置连接MQ虚拟主机 CONNECTION_FACTORY.setVirtualHost("/test"); //设置连接MQ虚拟主机的用户名密码...,null); channel.basicPublish("","HelloWorld",null,"Hello RabbitMQ".getBytes()); //资源关闭
消息, 一直压力下不去, 差点被领导骂死~, 后面还做了重大事故回顾会议, 哎 消息重回队列代码实现 消费者 package com.dance.redis.mq.rabbit.rqueue; import...com.dance.redis.mq.rabbit.RabbitMQHelper; import com.rabbitmq.client.*; import java.io.IOException;...e.printStackTrace(); } } }; // 参数:队列名称、是否自动...channel.close(); RabbitMQHelper.closeConnection(); } } 生产者 package com.dance.redis.mq.rabbit.rqueue...; import com.dance.redis.mq.rabbit.RabbitMQHelper; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel
这种场景下就可以用 MQ ,在下单的主流程(比如扣减库存、生成相应单据)完成之后发送一条消息到 MQ 让主流程快速完结,而由另外的单独线程拉取MQ的消息(或者由 MQ 推送消息),当发现 MQ 中有发红包或发短信之类的消息时.../sbin/rabbitmqctl stop 它会和本地节点通信并指示其干净的关闭,也可以指定关闭不同的节点,包括远程节点,只需要传入参数 -n : ....关闭 RabbitMQ 应用程序如果只想关闭应用程序,同时保持 Erlang 节点运行则可以用 stop_app: ....查看已声明的队列 ./sbin/rabbitmqctl list_queues 查看交换器 ..../sbin/rabbitmqctl list_exchanges 该命令还可以附加参数,比如列出交换器的名称、类型、是否持久化、是否自动删除: .
RabbitMQ简介 在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么? MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。...为什么选择RabbitMQ 现在的市面上有很多MQ可以选择,比如ActiveMQ、ZeroMQ、Appche Qpid,那问题来了为什么要选择RabbitMQ?...当你把消息发送到Rabbit服务器的时候,你需要选择你是否要进行持久化,但这并不能保证Rabbit能从崩溃中恢复,想要Rabbit消息能恢复必须满足3个条件: 投递消息的时候durable设置为true...channel.basicPublish("", Config.QueueName, null, content.getBytes("UTF-8")); System.out.println("已发送消息...:" + content); // 关闭连接 channel.close(); conn.close(); } catch
没有一个直接的命令可以关闭整个集群,需要逐一进行关闭。...但是需要保证在重启时,最后关闭的节点最先被启动。...HAPROXY_HOME=/usr/local/haproxy-2.1.8 export PATH=$PATH:$HAPROXY_HOME/sbin 使得配置的环境变量立即生效: source /etc/profile 检查安装是否成功...rabbit-node1:5672 check inter 5000 rise 2 fall 3 weight 1 server mq-node2 rabbit-node2:5672 check...的 node1 节点每隔 5 秒进行一次健康检查,如果连续两次的检查结果都是正常,则认为该节点可用,此时可以将客户端的请求轮询到该节点上;如果连续 3 次的检查结果都不正常,则认为该节点不可用。
topic路由器的关键在于定义路由键,定义routingKey名称不能超过255字节,使用“.”作为分隔符,例如:com.mq.rabbit.error。...消费消息的时候routingKey可以使用下面字符匹配消息: "*"可以匹配所有内容; "#"匹配0和多个字符; 例如发布了一个“com.mq.rabbit.error”的消息: 能匹配上的路由键: cn.mq.rabbit....* cn.mq.rabbit.# #.error cn.mq.# # 不能匹配上的路由键: cn.mq.* *.error * 所以如果想要订阅所有消息,可以使用“#”匹配。...发布端: String routingKey = "com.mq.rabbit.error"; Connection conn = connectionFactoryUtil.GetRabbitConnection...用户如果自己设置了线程池,像本小节第一段代码写的那样,那么当连接关闭的时候,不会自动关闭用户自定义的线程池,所以用户必须自己手动关闭,通过调用shutdown()方法,否则可能会阻止JVM的终止。
CLUSTERED这个参数; 如果环境变量中没有CLUSTERED这个参数,当前容器的身份就是主,会调用change_default_user方法,这个方法中检查是否输入了用户名和密码,如果有就创建用户...=rabbitmqhost:5672 - mq.rabbit.username=admin - mq.rabbit.password=888888 - mq.rabbit.queue.name...- mq.rabbit.password=888888 - mq.rabbit.queue.name=consumer1.queue consumer2: image:...:rabbitmqhost environment: - mq.rabbit.address=rabbitmqhost:5672 - mq.rabbit.username...=admin - mq.rabbit.password=888888 - mq.rabbit.queue.name=consumer2.queue 这个脚本有以下几点需要注意:
生产者 package com.futao.springmvcdemo.mq.rabbit.topic; import com.futao.springmvcdemo.mq.rabbit.ExchangeTypeEnum...getDeliveryTag(), false); try { Thread.sleep(1000); } catch (Exception e) { } }); //关闭自动应答...getDeliveryTag(), false); try { Thread.sleep(2000); } catch (Exception e) { } }); //关闭自动应答...getDeliveryTag(), false); try { Thread.sleep(1000); } catch (Exception e) { } }); //关闭自动应答...getDeliveryTag(), false); try { Thread.sleep(1000); } catch (Exception e) { } }); //关闭自动应答
=rabbitmqhost:5672 - mq.rabbit.username=admin - mq.rabbit.password=888888 consumer: image: bolingcavalry...=rabbitmqhost:5672 - mq.rabbit.username=admin - mq.rabbit.password=888888 - mq.rabbit.queue.name...=rabbitmqhost:5672 - mq.rabbit.username=admin - mq.rabbit.password=888888 consumer1:...- mq.rabbit.password=888888 - mq.rabbit.queue.name=consumer1.queue consumer2: image:...:rabbitmqhost environment: - mq.rabbit.address=rabbitmqhost:5672 - mq.rabbit.username