Spring整合ActiveMQ时,在xml配置文件中使用<amq:xxx/>标签时提示错误

本文介绍了解决IDE配置ActiveMQ时出现的错误提示问题,通过手动配置schema文档路径来消除IDE对Spring配置文件中&lt;amq:xxx/&gt;标签的错误提示。

Spring整合ActiveMQ时,在xml配置文件中配置相关<amq:xxx/>标签时,IDE出现红色错误提示,

 

Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:
The matching wildcard is strict,
but no declaration can be found for element 'amq:broker'.

 

在网上搜索一下很多人出现这问题,参考了很多后,最后还是解决。

 

 http://activemq.apache.org/schema/core

 http://activemq.apache.org/schema/core/activemq-core.xsd

 

最终问题IDE无法读取schema文档,需要手工配置,

步骤如下:

1. Select Windows->Preferences from the Eclipse menu bar.
   2. Select XML->XML Catalog from the left hand configuration tree.
   3. Highlight User Specified Entries and select Add.
   4. The Add XML Catalog Entry windows appears.
   5. In the Location enter the path to the activemq-all jar, then add !/activemq.xsd to the end of the jar name. e.g. jssms/webapp/WEB-INF/lib/activemq-all-5.4.0.jar!/activemq.xsd  

   6. Under KeyType enter Namespace Name
   7. and under Key enter http://activemq.apache.org/schema/core
   8. then click Ok.
   9. Now we need to do the same for the other name space file, so hit Add again.
  10. In the Location enter the path to the activemq-all jar, then add !/activemq.xsd to the end of the jar name. e.g. jssms/webapp/WEB-INF/lib/activemq-all-5.4.0.jar!/activemq.xsd   

  11. Under KeyType enter Schema Location
  12. and under Key enter http://activemq.apache.org/schema/core/activemq-core.xsd 

<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- START SNIPPET: example --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> <!-- Allows us to use system properties as variables in this configuration file --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>file:${activemq.conf}/credentials.properties</value> </property> </bean> <!-- The <broker> element is used to configure the ActiveMQ broker. --> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> <!-- For better performances use VM cursor and small memory limit. For more information, see: http://activemq.apache.org/message-cursors.html Also, if your producer is "hanging", it's probably due to producer flow control. For more information, see: http://activemq.apache.org/producer-flow-control.html --> <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" producerFlowControl="true"> <!-- The constantPendingMessageLimitStrategy is used to prevent slow topic consumers to block producers and affect other consumers by limiting the number of messages that are retained For more information, see: http://activemq.apache.org/slow-consumer-handling.html --> <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="1000"/> </pendingMessageLimitStrategy> </policyEntry> <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> <!-- Use VM cursor for better latency For more information, see: http://activemq.apache.org/message-cursors.html <pendingQueuePolicy> <vmQueueCursor/> </pendingQueuePolicy> --> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> <!-- The managementContext is used to configure how ActiveMQ is exposed in JMX. By default, ActiveMQ uses the MBean server that is started by the JVM. For more information, see: http://activemq.apache.org/jmx.html --> <managementContext> <managementContext createConnector="false"/> </managementContext> <!-- Configure message persistence for the broker. The default persistence mechanism is the KahaDB store (identified by the kahaDB tag). For more information, see: http://activemq.apache.org/persistence.html --> <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> <!-- The systemUsage controls the maximum amount of space the broker will use before slowing down producers. For more information, see: http://activemq.apache.org/producer-flow-control.html If using ActiveMQ embedded - the following limits could safely be used: <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="20 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="1 gb"/> </storeUsage> <tempUsage> <tempUsage limit="100 mb"/> </tempUsage> </systemUsage> </systemUsage> --> <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="64 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> </systemUsage> <!-- The transport connectors expose ActiveMQ over a given protocol to clients and other brokers. For more information, see: http://activemq.apache.org/configuring-transports.html --> <transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireformat.maxFrameSize=104857600"/> </transportConnectors> <!-- destroy the spring context on shutdown to stop jetty --> <shutdownHooks> <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" /> </shutdownHooks> </broker> <!-- Enable web consoles, REST and Ajax APIs and demos Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details --> <import resource="jetty.xml"/> </beans> <!-- END SNIPPET: example --> 以上配置文档是什么意思
最新发布
09-17
在解读包含SpringActiveMQ配置的XML文档,需要分别理解与SpringActiveMQ相关部分的含义。 #### Spring配置部分 Spring配置通常用于管理应用程序中的Bean,包括创建、初始化和依赖注入等操作。在XML文档中,Spring配置主要通过`<bean>`标签来定义。例如,定义一个消息生产者或消费者的Bean: ```xml <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> </bean> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616"/> </bean> ``` 在上述代码中,`jmsTemplate` 是Spring提供的用于简化JMS操作的模板类,通过 `connectionFactory` 属性与ActiveMQ的连接工厂建立关联。`connectionFactory` 则指定了ActiveMQ的连接地址。 #### ActiveMQ配置部分 ActiveMQ的配置主要集中在 `activemq.xml` 文件中,该文件位于ActiveMQ安装目录的 `conf` 目录下,是核心配置文件,定义了ActiveMQ的基本设置,如代理(broker)的名称、消息存储方式、传输连接器等[^1][^2]。以下是一个常见的ActiveMQ配置示例: ```xml <broker brokerName="myBroker" useJmx="true"> <transportConnectors> <transportConnector name="tcp" uri="tcp://localhost:61616"/> </transportConnectors> <destinationPolicy> <policyMap> <policyEntries> <policyEntry queue=">"> <deadLetterStrategy> <sharedDeadLetterStrategy processExpired="false" processNonPersistent="false" /> </deadLetterStrategy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> </broker> ``` - `<broker>` 标签是整个配置的核心,`brokerName` 属性用于指定代理的名称,在网络环境中应当是唯一的。`useJmx` 属性表示是否启用JMX管理功能。 - `<transportConnectors>` 标签用于定义ActiveMQ的传输连接器,这里使用 `tcp` 协议,监听 `localhost:61616` 地址。 - `<destinationPolicy>` 标签用于配置消息目的地的策略,如死信队列策略。`processExpired` 表示是否将过期的消息放到死信队列,`processNonPersistent` 表示是否将非持久化消息放入死信队列 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值