2012-07-09 57 views
0

当我尝试发送消息时,出现以下异常。该URL似乎是正确的,我以前使用过类似的配置。我没有什么线索可能会导致此问题...SwiftMQ URL解析器无法解析正确的URL

Caused by: javax.naming.NamingException: invalid URL: protocol != smqp, URL==smqp://activemq:3001/timeout=10000 
    at com.swiftmq.jndi.v400.URLParser.parseURL(Unknown Source) 
    at com.swiftmq.jndi.InitialContextFactoryImpl.getInitialContext(Unknown Source) 
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667) 
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) 
    at javax.naming.InitialContext.init(InitialContext.java:223) 
    at javax.naming.InitialContext.<init>(InitialContext.java:197) 
    at org.springframework.jndi.JndiTemplate.createInitialContext(JndiTemplate.java:136) 
    at org.springframework.jndi.JndiTemplate.getContext(JndiTemplate.java:103) 
    at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:85) 
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152) 
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178) 
    at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95) 
    at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105) 
    at org.springframework.jndi.JndiObjectTargetSource.getTarget(JndiObjectTargetSource.java:127) 
    ... 50 more 

配置

<!-- JMS Connection Factory --> 
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
    <property name="environment"> 
     <props> 
      <prop key="java.naming.provider.url">smqp://activemq:3001/timeout=10000</prop> 
      <prop key="java.naming.factory.initial">com.swiftmq.jndi.InitialContextFactoryImpl</prop> 
     </props> 
    </property> 
</bean> 

<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiTemplate" ref="jndiTemplate" /> 
    <property name="jndiName" value="QueueConnectionFactory" /> 
    <property name="lookupOnStartup" value="false" /> 
    <property name="cache" value="false" /> 
    <property name="proxyInterface" value="javax.jms.QueueConnectionFactory" /> 
</bean> 

<bean id="sendConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory" destroy-method="destroy"> 
    <property name="targetConnectionFactory" ref="jmsConnectionFactory" /> 
    <property name="reconnectOnException" value="true" /> 
    <property name="sessionCacheSize" value="100"/> 
</bean> 

<!-- Template used only for sending messages --> 
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
    <property name="connectionFactory" ref="sendConnectionFactory" /> 
    <property name="defaultDestinationName" value="[email protected]_4001" /> 
</bean> 

使用

MessageCreator messageCreator = new MessageCreatorImpl(payload); 
jmsTemplate.send(messageCreator); // setter injection 

回答

0

是否有空白或任何其他无形“smqp://”前的字符?在这种情况下,我会得到相同的例外,否则它适用于我。

您应该将您的问题发布到SwiftMQ的user forum以获得适当的受众。

+0

URL == smqp:// activemq:3001有问题...它看起来像==运算符,但它是URL ='= smqp:// ...' – user219882 2012-07-31 11:23:08