rabbitmq学习9:使用spring-amqp发送消息及同步接收消息
来源:互联网 发布:四川广电网络怎么连接 编辑:程序博客网 时间:2024/06/05 19:42
通过对spring-amqp看重要类的认识,下面来通过spring-amqp的发送消息及同步接收消息是如何实现的。有兴趣的朋友 可以去spring-amqp官网下载例子。
先来看看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>
0 0
- rabbitmq学习9:使用spring-amqp发送消息及同步接收消息
- rabbitmq学习9:使用spring-amqp发送消息及同步接受消息
- 使用spring-amqp发送消息及同步接收消息
- rabbitmq学习10:使用spring-amqp发送消息及异步接收消息
- 使用spring-amqp发送消息及异步接收消息
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(中)
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(下)
- 使用Spring和AMQP发送接收消息(上)
- 使用Spring和AMQP发送接收消息(中)
- rabbitmq学习10:使用spring-ampq发送消息及异步接受消息
- rabbitmq一---一对一发送及接收消息
- RabbitMQ学习之spring整合发送同步消息
- RabbitMQ学习(九)之spring整合发送同步消息
- 使用RabbitMQ简单发送接收消息
- Golang使用amqp发送消息
- RabbitMq研究历程一:如何使用RabbitMq发送,接收消息
- DB2出现的SQL1032N错误原因及解决方法
- for the dream!
- 【180网站】43-49
- c++断点续传和多线程下载模块
- Linux C多线程
- rabbitmq学习9:使用spring-amqp发送消息及同步接收消息
- 超慢速移动动画使用CSS3实现流畅效果
- 题目1042:Coincidence(2008年上海交通大学计算机研究生机试真题)
- 信息加密系统c++小程序
- 数据传输指令--xchg
- (前端细节)背景100%平铺,浏览器缩小,背景显示不全bug
- db2 进程全接触
- 卷积的理解
- mysql优化2