Not able to run an example with org.springframework.amqp.rabbit.core.RabbitTemplat e
Hi,
I have the requirement of using rabbitmq with spring framework. I am taking help from this page : http://ndpar.blogspot.com/2010/08/wo...in-spring.html
The code being used is this :
applicationcontext.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schem...-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<bean id="rabbitConnectionFactory" class="org.springframework.amqp.rabbit.connection. SingleConnectionFactory"
p:username="guest" p:password="guest" p:port="5672">
<constructor-arg value="localhost" />
</bean>
<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.Rabbit Template"
p:connectionFactory-ref="rabbitConnectionFactory" p:exchange="amq.fanout" />
<bean id="messageSender" class="rabbitMQSimpleApp.MessageSender" />
<bean class="org.springframework.amqp.rabbit.listener.Si mpleMessageListenerContainer"
p:connectionFactory-ref="rabbitConnectionFactory" p:queueName="myQueue"
p:messageListener-ref="messageListener" />
<bean id="messageListener" class="rabbitMQSimpleApp.MessageHandler" />
</beans>
MessageHandler.java
================
package rabbitMQSimpleApp;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
public class MessageHandler implements MessageListener {
@Override
public void onMessage(Message message) {
System.out.println("Received message: " + message);
System.out.println("Text: " + new String(message.getBody()));
}
}
MessageSender.java
===============
package rabbitMQSimpleApp;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autow ired;
public class MessageSender {
@Autowired
private AmqpTemplate template;
public void send(String text) {
template.convertAndSend(text);
}
}
Sender.java
==========
package rabbitMQSimpleApp;
import org.springframework.context.ConfigurableApplicatio nContext;
import org.springframework.context.support.ClassPathXmlAp plicationContext;
public class Sender {
public static void main(String[] args) {
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("rabbitMQSimpleApp/applicationContext.xml");
MessageSender messageSender = context.getBean(MessageSender.class);
messageSender.send("Hello from Spring-AMQP");
}
}
Exception coming
=============
Exception in thread "main" org.springframework.context.ApplicationContextExce ption: Failed to start bean 'org.springframework.amqp.rabbit.listener.SimpleMe ssageListenerContainer#0'; nested exception is org.springframework.amqp.AmqpIOException: java.io.IOException
at org.springframework.context.support.DefaultLifecyc leProcessor.doStart(DefaultLifecycleProcessor.java :169)
at org.springframework.context.support.DefaultLifecyc leProcessor.access$1(DefaultLifecycleProcessor.jav a:154)
at org.springframework.context.support.DefaultLifecyc leProcessor$LifecycleGroup.start(DefaultLifecycleP rocessor.java:335)
at org.springframework.context.support.DefaultLifecyc leProcessor.startBeans(DefaultLifecycleProcessor.j ava:143)
at org.springframework.context.support.DefaultLifecyc leProcessor.onRefresh(DefaultLifecycleProcessor.ja va:108)
at org.springframework.context.support.AbstractApplic ationContext.finishRefresh(AbstractApplicationCont ext.java:908)
at org.springframework.context.support.AbstractApplic ationContext.refresh(AbstractApplicationContext.ja va:428)
at org.springframework.context.support.ClassPathXmlAp plicationContext.<init>(ClassPathXmlApplicationCon text.java:139)
at org.springframework.context.support.ClassPathXmlAp plicationContext.<init>(ClassPathXmlApplicationCon text.java:83)
at rabbitMQSimpleApp.Sender.main(Sender.java:9)
Caused by: org.springframework.amqp.AmqpIOException: java.io.IOException
at org.springframework.amqp.rabbit.support.RabbitUtil s.convertRabbitAccessException(RabbitUtils.java:11 8)
at org.springframework.amqp.rabbit.support.RabbitAcce ssor.convertRabbitAccessException(RabbitAccessor.j ava:107)
at org.springframework.amqp.rabbit.listener.AbstractR abbitListeningContainer.start(AbstractRabbitListen ingContainer.java:200)
at org.springframework.context.support.DefaultLifecyc leProcessor.doStart(DefaultLifecycleProcessor.java :166)
... 9 more
Caused by: java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChanne l.java:121)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc (AMQChannel.java:145)
at com.rabbitmq.client.impl.ChannelN.queueDeclarePass ive(ChannelN.java:548)
at com.rabbitmq.client.impl.ChannelN.queueDeclarePass ive(ChannelN.java:71)
at org.springframework.amqp.rabbit.listener.SimpleMes sageListenerContainer.createBlockingQueueConsumer( SimpleMessageListenerContainer.java:214)
at org.springframework.amqp.rabbit.listener.SimpleMes sageListenerContainer.initializeConsumers(SimpleMe ssageListenerContainer.java:191)
at org.springframework.amqp.rabbit.listener.SimpleMes sageListenerContainer.doStart(SimpleMessageListene rContainer.java:157)
at org.springframework.amqp.rabbit.listener.AbstractR abbitListeningContainer.start(AbstractRabbitListen ingContainer.java:197)
... 10 more
Primary aim is to run a pub sub mechanism
Is there any example for a pub-sub mechanism against rabbitmq+spring combo ?
The sample application looks too clumsy as it contains all the configuration code in java files and is not understandable !
Help appreciated !