第 26 章 处理 low Consumers
				具有服务器端队列较慢的使用者可能会对服务器性能造成严重问题。随着消息在消费者的服务器端队列中不断积累,内存使用量会增加。因此,服务器可能会进入分页模式,这可能会对性能造成负面影响。另一个重要问题是,如果 consumer-windows-size 属性大于 0,则发送到客户端消息缓冲区的消息可以继续等待被使用。可以设置条件,以便不会足够快速地使用消息的使用者可以与服务器断开连接。
			
				在速度较慢的消费者是 MDB 时,JBoss EAP 服务器管理连接。MDB 断开连接后,消息将返回到使用 MDB 的队列,MDB 自动重新连接,此时,消息将再次负载平衡到队列上的所有 MDB。此过程适用于侦听持久主题的 MDB。对于 JMS 使用者,如果速度慢,则为断开连接,则断开连接,只有在重新连接 -attempts 设为  连接。
			-1 或大于 0 时才会重新
如果是不可达的 JMS 订阅者,或者带有不可持久性订阅的 MDB,连接将断开连接,从而导致订阅被删除。如果不可达目的订阅者重新连接,则会创建一个新的不可持久性订阅,它开始只消耗发送到该主题的新消息。
确定消费者是否慢慢检查特定消费者已确认的消息数量的计算。它不考虑是否在消费者上启用了流控制,或者消费者是否在流传输大型消息,例如:在配置缓慢的使用者检测时请记住这一点。
				使用调度的线程池执行慢速消费者检查。服务器上启用了消费者检测缓慢的队列将在内部 java.util.concurrent.ScheduledThreadPoolExecutor 实例中产生一个新条目。如果队列数量较多,并且 慢消费-检查-period 相对较低,那么执行某些检查时可能会延迟。但是,这不会影响检测算法使用的计算准确性。有关这个线程池的详情,请参阅线程管理。
			
				每个 地址设置 较慢的消费者处理速度较慢。有关配置 address-setting 的更多信息,请参阅地址设置,并参阅附录中的 address-setting 属性 列表。有三个属性可用于配置较慢使用者的处理:它们是:
			
- slow-consumer-check-period
- 
							慢速消费者的检查频率(秒数)。默认值为 5。
- slow-consumer-policy
- 决定识别慢速消费者时发生的情况。有效选项为 - KILL或- NOTIFY:- 
									KILL将终止消费者的连接,这将影响使用同一连接的任何客户端线程。
- 
									NOTIFY将向客户端发送CONSUMER_SLOW管理通知。
 - 默认值为 - NOTIFY。
- 
									
- slow-consumer-threshold
- 
							在消费者被视为缓慢之前允许的最小消息消耗率。默认值为 -1,它没有绑定。
				使用管理 CLI 来读取任何属性的当前值:例如,使用以下命令来读取 address-setting 的当前 ,名称为 slow-consumer- policymyAddress :
			
/subsystem=messaging-activemq/server=default/address-setting=myAddress:read-attribute(name=slow-consumer-policy)
/subsystem=messaging-activemq/server=default/address-setting=myAddress:read-attribute(name=slow-consumer-policy)
				同样,使用以下示例来设置相同的 slow-consumer-policy :
			
/subsystem=messaging-activemq/server=default/address-setting=myAddress:write-attribute(name=slow-consumer-policy,value=<NEW_VALUE>)
/subsystem=messaging-activemq/server=default/address-setting=myAddress:write-attribute(name=slow-consumer-policy,value=<NEW_VALUE>)