You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by kureckam <mk...@fractech.net> on 2011/07/27 15:49:09 UTC
Unable to receive topic message
I've implemented a modified version of an example from the "ActiveMQ in
Action" book and don't understand why I'm not receiving a message. The code
is running on tomcat as embedded broker and to test it I'm using ActiveMQ's
web console to send a message via link http://localhost:8161/admin/send.jsp,
Destination set as START and type set to Topic. I added output to verify
listener class was instantiated and it is.
*/WEB-INF/web.xml*
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/jms-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>jms-webapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jms-webapp</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<resource-ref>
<description>JMS Connection</description>
<res-ref-name>jms/ConnectionFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<message-destination-ref>
<message-destination-ref-name>jms/FooQueue</message-destination-ref-name>
<message-destination-type>javax.jms.Topic</message-destination-type>
<message-destination-usage>Produces</message-destination-usage>
<message-destination-link>jms/FooQueue</message-destination-link>
</message-destination-ref>
</web-app>
*/WEB-INF/jms-webapp-servlet.xml*
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan
base-package="org.apache.activemq.book.ch8.jms.web" />
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"
/>
</beans>
*/WEB-INF/spring/jms-context.xml*
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd">
<jee:jndi-lookup id="connectionFactory"
jndi-name="java:comp/env/jms/ConnectionFactory"
cache="true"
resource-ref="true"
lookup-on-startup="true"
expected-type="org.apache.activemq.ActiveMQConnectionFactory"
proxy-interface="javax.jms.ConnectionFactory">
</jee:jndi-lookup>
<jee:jndi-lookup id="fooQueue"
jndi-name="java:comp/env/jms/FooQueue"
cache="true"
resource-ref="true"
lookup-on-startup="true"
expected-type="org.apache.activemq.command.ActiveMQTopic"
proxy-interface="javax.jms.Topic">
</jee:jndi-lookup>
<bean id="singleConnectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory"
p:targetConnectionFactory-ref="connectionFactory" />
<bean id="jmsMessageDelegate"
class="org.apache.activemq.book.ch8.jms.delegate.JmsMessageDelegate" />
<bean id="myMessageListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter"
p:delegate-ref="jmsMessageDelegate"
p:defaultListenerMethod="handleMessage">
</bean>
<jms:listener-container
container-type="default"
connection-factory="singleConnectionFactory"
destination-type="topic"
acknowledge="auto">
<jms:listener destination="START" ref="myMessageListener" />
</jms:listener-container>
</beans>
*/META-INF/context.xml*
<Context reloadable="true">
<Resource
auth="Container"
name="jms/ConnectionFactory"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="vm://localhost:61616"
brokerName="MyActiveMQBroker" />
<Resource
auth="Container"
name="jms/FooQueue"
type="org.apache.activemq.command.ActiveMQTopic"
description="JMS queue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="START" />
</Context>
*src/org.apache.activemq.book.ch8.jms.delegate/JmsMessageDelegate.java*
package org.apache.activemq.book.ch8.jms.delegate;
public class JmsMessageDelegate {
public JmsMessageDelegate() {
System.out.println("JmsMessageDelegate CONSTRUCTED");
}
public void handleMessage(String message) {
System.out.println("Consumed message with payload: " + message);
}
}
--
View this message in context: http://activemq.2283324.n4.nabble.com/Unable-to-receive-topic-message-tp3698560p3698560.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
Re: Unable to receive topic message
Posted by kureckam <mk...@fractech.net>.
I found my problem. I didn't have a good understanding of what an embedded
broker is. Embedded brokers only work for messages within the same app and I
was sending the message externally.
--
View this message in context: http://activemq.2283324.n4.nabble.com/Unable-to-receive-topic-message-tp3698560p3698846.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.