`
yimeng528
  • 浏览: 188290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rabbitmq学习9:使用spring-amqp发送消息及同步接收消息

阅读更多

通过对spring-amqp看重要类的认识,下面来通过spring-amqp的发送消息及同步接收消息是如何实现的。有兴趣的朋友 可以去spring-amqp官网下载例子。

    先来看看HelloWorldConfiguration类

Java代码  收藏代码
  1. package org.springframework.amqp.helloworld;  
  2.   
  3. import org.springframework.amqp.core.Queue;  
  4. import org.springframework.amqp.rabbit.config.AbstractRabbitConfiguration;  
  5. import org.springframework.amqp.rabbit.connection.ConnectionFactory;  
  6. import org.springframework.amqp.rabbit.connection.SingleConnectionFactory;  
  7. import org.springframework.amqp.rabbit.core.RabbitTemplate;  
  8. import org.springframework.context.annotation.Bean;  
  9. import org.springframework.context.annotation.Configuration;  
  10.   
  11. @Configuration  
  12. public class HelloWorldConfiguration extends AbstractRabbitConfiguration {  
  13.   
  14.     protected final String helloWorldQueueName = "hello.world.queue";  
  15.   
  16.     @Bean  
  17.     public ConnectionFactory connectionFactory() {  
  18.         SingleConnectionFactory connectionFactory = new SingleConnectionFactory(  
  19.                 "localhost");  
  20.         connectionFactory.setUsername("guest");  
  21.         connectionFactory.setPassword("guest");  
  22.         return connectionFactory;  
  23.     }  
  24.   
  25.     @Override  
  26.     public RabbitTemplate rabbitTemplate() {  
  27.         RabbitTemplate template = new RabbitTemplate(connectionFactory());  
  28.         // The routing key is set to the name of the queue by the broker for the  
  29.         // default exchange.  
  30.         template.setRoutingKey(this.helloWorldQueueName);  
  31.         // // Where we will synchronously receive messages from  
  32.         template.setQueue(this.helloWorldQueueName);  
  33.         return template;  
  34.     }  
  35.   
  36.     @Bean  
  37.     public Queue helloWorldQueue() {  
  38.         return new Queue(this.helloWorldQueueName);  
  39.     }  
  40. }  

 此类定义了ConnectionFactory 、RabbitTemplate 、Queue

发送消息的程序如下:

Java代码  收藏代码
  1. package org.springframework.amqp.helloworld;  
  2.   
  3. import org.springframework.amqp.core.AmqpTemplate;  
  4. import org.springframework.context.ApplicationContext;  
  5. import org.springframework.context.annotation.AnnotationConfigApplicationContext;  
  6.   
  7. public class Producer {  
  8.   
  9.     public static void main(String[] args) {  
  10.         ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class);  
  11.         AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);  
  12.         amqpTemplate.convertAndSend("Hello World");  
  13.         System.out.println("Sent: Hello World");  
  14.     }  
  15.   
  16. }  

 同步接收消息如下:

Java代码  收藏代码
  1. package org.springframework.amqp.helloworld;  
  2.   
  3. import org.springframework.amqp.core.AmqpTemplate;  
  4. import org.springframework.context.ApplicationContext;  
  5. import org.springframework.context.annotation.AnnotationConfigApplicationContext;  
  6.   
  7. public class Consumer {  
  8.       
  9.     public static void main(String[] args) {  
  10.         ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class);  
  11.         AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);  
  12.         System.out.println("Received: " + amqpTemplate.receiveAndConvert());  
  13.     }  
  14.   
  15. }  

 

这个例子是Exchange类型为DirectExchange. routingkey的名称默认为Queue的名称。

对于 HelloWorldConfiguration类的配置,也可以通过SPRING XML文件来配置。例如

rabbitConfiguration.xml

 

 

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  5.   
  6.     <!-- 创建connectionFactory -->  
  7.     <bean id="connectionFactory"  
  8.         class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">  
  9.         <constructor-arg value="localhost" />  
  10.         <property name="username" value="guest" />  
  11.         <property name="password" value="guest" />  
  12.     </bean>  
  13.     <bean id="rabbitAdmin"  
  14.         class="org.springframework.amqp.rabbit.core.RabbitAdmin">  
  15.         <constructor-arg ref="connectionFactory" />  
  16.     </bean>  
  17.     <bean id="rabbitTemplate"  
  18.         class="org.springframework.amqp.rabbit.core.RabbitTemplate">  
  19.         <constructor-arg ref="connectionFactory"></constructor-arg>  
  20.         <property name="queue" value="hello.world.queue"></property>  
  21.         <property name="routingKey" value="hello.world.queue"></property>  
  22.     </bean>  
  23.   
  24.     <!-- 声明Queue并设定Queue的名称 -->  
  25.     <bean id="helloWorldQueue"  
  26.         class="org.springframework.amqp.core.Queue">  
  27.         <constructor-arg value="hello.world.queue"></constructor-arg>  
  28.     </bean>  
  29.       
  30. </beans>  

 

分享到:
评论

相关推荐

    java rabbitmq spring springAMQP 代码包 project

    这个“java rabbitmq spring springAMQP 代码包 project”显然是一个综合性的项目,旨在展示如何在Java环境中集成和使用RabbitMQ消息队列服务,结合Spring框架以及Spring AMQP的高级抽象来实现。接下来,我们将详细...

    利用 Spring 和 RabbitMQ 解决消息传送难题

    在Spring中使用RabbitMQ时,我们首先需要配置RabbitMQ连接工厂(ConnectionFactory),然后创建一个RabbitTemplate实例,这是Spring AMQP提供的核心工具类,用于发送和接收消息。通过RabbitTemplate,我们可以使用...

    RabbitMQ实战-多线程-springboot-rabbit.zip

    通过这个项目,你将学习如何在Spring Boot中集成RabbitMQ,使用多线程来提高消息处理效率,并理解如何设计和实现一个健壮的、高并发的消息处理系统。同时,这也会帮助你掌握如何在分布式环境中解决异步通信和数据...

    rabbitmq实战-rabbitmq-action.zip

    3.1 Spring整合:使用Spring框架集成RabbitMQ,包括配置、生产者和消费者组件的创建,以及消息模板的使用。 3.2 消息确认:消费者确认机制,确保消息被正确处理,防止消息丢失。 3.3 工作队列:通过多消费者并行处理...

    springBoot整合RabbitMQ案例

    RabbitMQ是一个开源的消息代理和队列服务器,而SpringBoot是基于Spring框架的简化版,提供了快速构建应用程序的方式。下面我们将深入探讨如何在SpringBoot项目中整合RabbitMQ,以及相关的关键知识点。 首先,我们...

    rabbitMQ课件.zip

    2. 同步节点:使用rabbitmq-cluster命令使节点间同步状态。 3. 配置文件:确保所有节点的erlang.cookie文件内容相同,这是节点间通信的密钥。 4. 防火墙设置:开放所需端口,允许节点间通信。 5. 监控集群状态:通过...

    jms-spring.zip

    - Spring的`JmsTemplate`类简化了发送和接收消息的过程,提供了同步和异步两种操作模式。 4. **监听器容器**: - `DefaultMessageListenerContainer`:用于接收消息,通过实现MessageListener接口的类进行消息...

    RabbitMQ-高级篇.pdf

    消息从生产者发出到被消费者接收的过程中,会经历多个阶段,其中任一环节都可能导致消息丢失。常见的情况包括: 1. **发送时丢失**:生产者发送的消息未能到达交换机(Exchange)。 2. **到达交换机后未到达队列**:...

    rabbitmq-server-3.7.18.rar

    9. **监控和日志**:使用RabbitMQ的监控工具如Prometheus和Grafana,以及日志收集工具如Logstash和ELK栈,对RabbitMQ进行性能监控和故障排查。 以上是关于RabbitMQ服务器3.7.18版本压缩包及其与SpringCloud消息总线...

    SpringBoot 整合 RabbitMQ demo

    RabbitMQ则是广泛使用的开源消息队列系统,基于AMQP(Advanced Message Queuing Protocol)协议,用于应用程序之间的异步通信。在这个“SpringBoot整合RabbitMQ demo”中,我们将探讨如何将这两者结合,构建一个高效...

    使用rabbitmq解决超卖问题

    - 应用程序和RabbitMQ之间通过API交互,可以采用Spring AMQP框架简化开发,实现生产者和消费者的声明及消息处理逻辑。 - 为提高可用性,RabbitMQ集群可以配置多个节点,实现数据复制和故障切换。 综上所述,通过...

    Spring-Cloud-RabbitMQ

    在Spring Cloud RabbitMQ中,我们可以使用`RabbitTemplate`或者`AmqpTemplate`来发送消息。 7. **消费者(Consumer)**:接收并处理消息的应用程序。Spring Cloud RabbitMQ提供了`@RabbitListener`注解,用于监听...

    rabbit面试及学习资料汇总

    9. **监控与管理**:使用RabbitMQ Management Console或RabbitMQ的API进行监控和管理,查看队列状态、消息统计等。 10. **异常处理与重试策略**:在消费者处理消息失败时,应有适当的重试策略和死信队列处理,防止...

    24道消息队列RabbitMQ面试题!.zip

    消息队列RabbitMQ是一种广泛使用的开源消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议,用于在分布式系统中实现可靠的消息传递。在面试中,掌握RabbitMQ的相关知识是至关重要的,因为它是现代...

    common-io监听文件夹并发送rabbitmq

    4. 使用Spring AMQP的`AmqpTemplate`或`RabbitTemplate`来发送消息到RabbitMQ队列,消息体可以是文件内容的字节或解析后的数据结构。 5. 在RabbitMQ的消费者端,接收这些消息并进行后续处理。 通过这种方式,你可以...

    rabbitmqproducer.rar

    RabbitMQ是一个开源的消息代理和队列服务器,广泛应用于各种业务场景,包括任务调度、数据同步、日志收集等。SpringBoot框架以其轻量级和便捷的特性,成为了开发Java应用的首选。本方案将重点讨论如何在SpringBoot...

    ssm整合webSocket、rabbitMq

    在现代Web应用中,实时性需求日益增强,SSM整合WebSocket和RabbitMQ能实现高效的数据同步与异步消息处理。 WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双向通信,即服务器可以主动向客户端推送...

    demo-rabbitmq.zip

    2. **RabbitTemplate**: Spring提供的模板类,用于发送和接收消息。它简化了与RabbitMQ的交互,支持同步和异步操作。 3. **消息实体**: 定义消息的业务数据模型,通常为Java Bean。 4. **Exchange**: 交换器负责...

    springboot+rabbitmq+mysql

    标题 "springboot+rabbitmq+mysql" 描述的是一个使用Spring Boot框架集成RabbitMQ消息队列,并将处理后的数据存储到MySQL数据库的简易应用。这个项目可能是一个基础的后台服务,用于处理异步任务或者数据同步。接...

    rabbitmq.7z

    RabbitMQ是一个广泛使用的开源消息代理,它实现了AMQP(Advanced Message Queuing Protocol)协议,使得不同语言和平台的应用能够进行有效通信。在这个“rabbitmq.7z”压缩包中,我们很显然会找到与RabbitMQ集成...

Global site tag (gtag.js) - Google Analytics