rocketmq控制台跳过堆积是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rocketmq控制台跳过堆积是啥意思相关的知识,希望对你有一定的参考价值。

参考技术A rocketmq控制台跳过堆积是RocketMQ 控制台不支持消息堆积查询、消息堆积报警和订阅关系查询功能。MQ消息堆积是指生产者发送的消息短时间内在Broker端大量堆积,无法被消费者及时消费,从而导致业务功能无法正常使用。消息堆积常见于以下几种情况:
1、新上线的消费者功能有BUG,消息无法被消费。
2、消费者实例宕机或因网络问题暂时无法同Broker建立连接。
3、生产者短时间内推送大量消息至Broker,消费者消费能力不足。
4、生产者未感知Broker消费堆积持续向Broker推送消息。

“INFO:TLD 已跳过。URI 已定义”是啥意思?

【中文标题】“INFO:TLD 已跳过。URI 已定义”是啥意思?【英文标题】:What does "INFO: TLD skipped. URI is already defined" mean?“INFO:TLD 已跳过。URI 已定义”是什么意思? 【发布时间】:2012-02-02 05:01:13 【问题描述】:

在 Eclipse 中运行我的 JSF 2 应用程序时 我收到了几个 TLD 被跳过的信息日志,因为它已经定义如下:

Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined

我很想知道,这个日志是什么意思?

【问题讨论】:

请不要转发您的问题。 链接的重复帖子已被删除 【参考方案1】:

这意味着您的 Web 应用的运行时类路径中有重复的 TLD 文件。由于 TLD 通常包含在库 JAR 文件中,这反过来意味着您的 Web 应用的运行时类路径中有重复的 JAR 文件。

假设您没有触及 appserver 的 /lib 文件夹或 JDK 的 /lib 文件夹,那么这些重复项位于 WAR 构建的 /WEB-INF/lib 文件夹中。清理它。

【讨论】:

【参考方案2】:

规范要求的 URI 的优先级顺序是:

J2EE platform taglibs - Tomcat doesn't provide these

web.xml entries

JARS in WEB-INF/lib & TLDs under WEB-INF (equal priority)

Additional entries from the container

Tomcat 加载 tld 两次。

1、Tomcat启动时会加载tld,在tld文件中寻找监听器。

2,当第一个jsp文件被编译时,它会建立一个tld对的缓存。

1、加载tld查找tld文件中的监听器

当从 web.xml 加载时,它将 web.xml 中的 taglib-uri 和 tld 文件中的 uri 放入一个集合中。 从 WEB-INF 或 jar 加载时,uri 来自 tld 文件。

Tomcat 需要避免重复添加 tld 监听器,因此它会检查 uri 是否存在于集合中。如果 uri 已经存在,它会记录您发布的消息并跳过添加 tld 侦听器。

2、构建缓存

1) web.xml 条目,标签 uri 取自 web.xml

2) 扫描WEB-INF下的tld文件,标签uri取自tld文件

3) 扫描jar,标签uri取自tld文件。

如果存在uri aready,该条目将被忽略。

【讨论】:

【参考方案3】:

这意味着例如,如果您使用 Tomcat 和 Maven(或其他服务器),则您发布了一个已经在服务器上找到的 JSTL 库,并且服务器确实会抱怨。

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

在部署应用程序时(在 Tomcat 上),您会收到错误消息:

INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Mar 02, 2017 2:19:32 PM org.apache.catalina.startup.TaglibUriRule body

解决方案是使用标签 'scope' 和值 'provided',因为 Tomcat 已经附带了 JSTL(它仅适用于您的 IDE):

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        <scope>provided</scope>
    </dependency>

然后错误就会消失。

【讨论】:

以上是关于rocketmq控制台跳过堆积是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

输出控制台中的()是啥意思?

R 控制台左侧的“+”符号是啥意思?

WatchKit:啥是“Kermit”,这个控制台日志语句是啥意思?

代理在 Vue 3 的控制台中是啥意思?

RocketMQ消息堆积与消息延迟

如果 console.log(4) 在 Chrome 控制台中输出 undefined 是啥意思?