使用spring-amqp发送消息及同步接收消息
2013-01-28 16:31
501 查看
通过对spring-amqp看重要类的认识,下面来通过spring-amqp的发送消息及同步接收消息是如何实现的。有兴趣的朋友 可以去spring-amqp官网下载例子。
先来看看HelloWorldConfiguration类
此类定义了ConnectionFactory 、RabbitTemplate 、Queue
发送消息的程序如下:
同步接收消息如下:
这个例子是Exchange类型为DirectExchange. routingkey的名称默认为Queue的名称。
对于 HelloWorldConfiguration类的配置,也可以通过SPRING XML文件来配置。例如
rabbitConfiguration.xml
转载自:http://wubin850219.iteye.com/blog/1050279
官方资料:http://www.springsource.org/spring-amqp
参考资料:http://roadytulip.iteye.com/blog/661279
先来看看HelloWorldConfiguration类
package org.springframework.amqp.helloworld; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.config.AbstractRabbitConfiguration; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class HelloWorldConfiguration extends AbstractRabbitConfiguration { protected final String helloWorldQueueName = "hello.world.queue"; @Bean public ConnectionFactory connectionFactory() { SingleConnectionFactory connectionFactory = new SingleConnectionFactory( "localhost"); connectionFactory.setUsername("guest"); connectionFactory.setPassword("guest"); return connectionFactory; } @Override public RabbitTemplate rabbitTemplate() { RabbitTemplate template = new RabbitTemplate(connectionFactory()); // The routing key is set to the name of the queue by the broker for the // default exchange. template.setRoutingKey(this.helloWorldQueueName); // // Where we will synchronously receive messages from template.setQueue(this.helloWorldQueueName); return template; } @Bean public Queue helloWorldQueue() { return new Queue(this.helloWorldQueueName); } }
此类定义了ConnectionFactory 、RabbitTemplate 、Queue
发送消息的程序如下:
package org.springframework.amqp.helloworld; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Producer { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class); AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class); amqpTemplate.convertAndSend("Hello World"); System.out.println("Sent: Hello World"); } }
同步接收消息如下:
package org.springframework.amqp.helloworld; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Consumer { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class); AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class); System.out.println("Received: " + amqpTemplate.receiveAndConvert()); } }
这个例子是Exchange类型为DirectExchange. routingkey的名称默认为Queue的名称。
对于 HelloWorldConfiguration类的配置,也可以通过SPRING XML文件来配置。例如
rabbitConfiguration.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 创建connectionFactory --> <bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory"> <constructor-arg value="localhost" /> <property name="username" value="guest" /> <property name="password" value="guest" /> </bean> <bean id="rabbitAdmin" class="org.springframework.amqp.rabbit.core.RabbitAdmin"> <constructor-arg ref="connectionFactory" /> </bean> <bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate"> <constructor-arg ref="connectionFactory"></constructor-arg> <property name="queue" value="hello.world.queue"></property> <property name="routingKey" value="hello.world.queue"></property> </bean> <!-- 声明Queue并设定Queue的名称 --> <bean id="helloWorldQueue" class="org.springframework.amqp.core.Queue"> <constructor-arg value="hello.world.queue"></constructor-arg> </bean> </beans>
转载自:http://wubin850219.iteye.com/blog/1050279
官方资料:http://www.springsource.org/spring-amqp
参考资料:http://roadytulip.iteye.com/blog/661279
相关文章推荐
- rabbitmq学习9:使用spring-amqp发送消息及同步接收消息
- 使用spring-amqp发送消息及同步接收消息
- 使用spring-amqp发送消息及异步接收消息
- 【Spring】使用Spring和AMQP发送接收消息(下)
- 使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(下)
- 使用Spring和AMQP发送接收消息(中)
- rabbitmq学习10:使用spring-amqp发送消息及异步接收消息
- 【Spring】使用Spring和AMQP发送接收消息(中)
- 【Spring】使用Spring和AMQP发送接收消息(下)
- rabbitmq学习9:使用spring-amqp发送消息及同步接受消息
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(中)
- 使用spring-rabbit测试RabbitMQ消息确认(发送确认,接收确认)
- ActiveMQ使用spring JmsTemplate发送消息(一)
- [RabbitMQ]14_RabbitMQ学习之spring整合发送同步消息
- ActiveMQ使用笔记(三)ActiveMQ消息发送与接收