上篇讲了RabbitMQ连接工厂的作用是用来创建RabbitMQ的连接,本篇就来讲讲RabbitMQ的发送消息。通过RabbitMQ发送消息最简单的方式就是将connectionFactory Bean注入到服务层类中,并使用它创建Connection,使用这个Connection来创建Channel,再使用这个Channel发布消息到Exchange中。
当然Spring AMQP提供了RabbitTemplate来简便我们的操作,消除RabbitMQ发送和接收消息相关的样板代码。使用RabbitTemplate也是先在配置文件中写相关的配置,使用Rabbit命名空间的<template>元素,如下:
<template id="rabbitTemplate" connection-factory="connectionFactory">
现在要发送消息只需要将模板bean注入到服务层类中(这里以SendServiceImpl为例),并使用它来发送Spittle,使用RabbitTemplate来发送Spittle提醒,代码如下:
public class SendServiceImpl implements SendService {
private RabbitTemplate rabbit;
@Autowired
public SendServiceImpl (RabbitTemplate rabbit) {
this.rabbit = rabbit;
}
public void sendSpittle (Spittle spittle) {
rabbit.convertAndSend("spittle.test.exchange", "spittle.test", spittle);
}
}
上面代码中sendSpittle()调用RabbitTemplate的convertAndSend()方法,传入的三个参数分别是Exchange的名称、routing key以及要发送的对象。
这里如果使用最简单的只传要发送的对象的重载方法,RabbitTemplate就使用默认的Exchange和routing key。按之前配置的话,这两项默认都为空,也可以自行在<template>元素上借助exchange和routing-key属性配置不同的默认值:
<template id="rabbitTemplate" connection-factory="connectionFactory"
exchange="spittle.test.exchange"
routing-key="spittle.test" />
此外RabbitTemplate还有其他方法可以用来发送消息,比如用send()方法来发送org.springframework.amqp.core.Message对象,如下所示:
Message message = new Message("Hello World".getBytes(), new MessageProperties());
rabbit.send("hello.exchange", "hello.routing", message);
使用send()方法的技巧在于构造要发送的Message对象,在上面的例子中,通过给定字符串的字节数组来构建Message实例。这里是字符串相对比较简单,如果消息是复杂对象的话,则会比较复杂。也是因为这样,所以一般会用convertAndSend()方法,它会自动将对象转换为Message,不过它需要一个消息转换器来帮助完成该任务,默认的转换器是SimpleMessageConverter,它适用于String、Serializable实例和字节数组。
分享到:
相关推荐
标题中的“rabbitmq学习10:使用spring-amqp发送消息及异步接收消息”表明了本次讨论的主题,即如何在Spring框架中利用Spring AMQP组件与RabbitMQ进行交互,实现消息的发送和异步接收。RabbitMQ是一个开源的消息代理...
5. **RabbitTemplate**:这是 Spring AMQP 的主要操作接口,提供了一系列的方法来发送和接收消息。它封装了与 RabbitMQ 服务器的交互,包括直接发送、发布/订阅、路由等模式。 6. **消息转换器**:Spring AMQP 提供...
首先,文档中提到“Spring AMQP项目将核心Spring概念应用于基于AMQP的消息传递解决方案的开发”,这说明Spring AMQP利用了Spring框架的设计理念,将消息发送和接收抽象成一种简便的模板化操作。Spring框架中的依赖...
1. **RabbitTemplate**:这是Spring AMQP的核心类,它提供了一种声明式的方式来发送和接收消息。RabbitTemplate简化了与RabbitMQ服务器的交互,包括创建信道、发送和接收消息等操作。 2. **AmqpAdmin**:这是一个...
- `RabbitTemplate`:这是Spring AMQP的主要入口点,提供发送和接收消息的方法,简化了与RabbitMQ服务器的交互。 - `Message`和`MessageProperties`:`Message`代表AMQP的消息,`MessageProperties`包含消息的元...
- 模板机制:Spring AMQP核心的`AmqpTemplate`简化了发送和接收消息的过程。 - 消费者监听:通过`@RabbitListener`注解实现消息消费者,可以监听特定队列并处理消息。 - 异步消息处理:支持异步消息处理,提高...
Spring AMQP 是一个由 Spring Framework 提供的框架,它允许开发者使用 Spring 的编程模型与 RabbitMQ 消息中间件进行交互。RabbitMQ 是一种流行的开源消息代理,它实现了 Advanced Message Queuing Protocol (AMQP)...
3. **RabbitTemplate**:这是Spring AMQP的核心组件,它提供了一组模板方法,简化了发送和接收消息的过程。开发者可以通过RabbitTemplate进行基本的消息操作,如发送消息到指定队列,或者从队列中消费消息。 4. **...
Spring AMQP 允许使用模板方法和回调函数来处理消息的发送和接收。例如,可以提供一个回调函数,当消息发送失败时执行错误处理逻辑。 **7. Spring Boot 集成** Spring Boot 提供了对 Spring AMQP 的开箱即用支持,...
开发者可能会在项目中创建`ConnectionFactory`以连接到RabbitMQ服务器,定义`Queue`和`Exchange`,并使用`RabbitTemplate`或`AmqpAdmin`来发送和接收消息。同时,Spring的`@RabbitListener`注解可能被用来监听特定...
- 参考部分提供了使用Spring AMQP的详细指南,包括AMQP的基础抽象(如消息、交换器、队列、绑定等概念)、连接和资源管理、消息发送和接收的API等。 4. AMQP基础抽象 - 消息(Message):AMQP中的基本数据单位,...
Spring Cloud Config 和 Spring Cloud Bus AMQP 的结合使用为解决这一问题提供了一种优雅的解决方案。让我们深入探讨这两个组件以及它们如何协同工作来实现配置的动态更新。 Spring Cloud Config 是一个用于微服务...
创建消息生产者(Producer)时,Spring提供了一个`RabbitTemplate`类,我们可以使用它来发送消息到指定的交换机(Exchange)。交换机根据预设的路由键(Routing Key)将消息分发到相应的队列(Queue)。队列是消息的...
Spring AMQP是一个强大的框架,它将Apache RabbitMQ的消息中间件集成到Spring应用程序中,使得开发者可以轻松地在Java应用中实现异步通信和消息队列的功能。在这个名为"spring-rabbit-stocks"的项目中,我们将深入...
`RabbitTemplate`是Spring AMQP的核心组件,用于发送和接收消息。你可以通过`@Bean`注解在配置类中创建它: ```java @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { ...
AMQP是一种开放标准的消息协议,它定义了消息生产者、消费者和消息队列之间的交互方式。RabbitMQ是基于AMQP的开源消息代理,广泛应用于分布式系统中的异步任务处理和解耦。 Spring AMQP提供了与RabbitMQ集成的便利...
`RabbitTemplate`是Spring AMQP的核心工具类,它提供了发送和接收消息的便捷方法。 7. **Listener容器**: Spring AMQP提供了两种监听容器,一种是基于SimpleMessageListenerContainer,另一种是基于...
这个项目可能包括配置文件、示例代码以及测试用例,帮助开发者更好地理解和实践Spring AMQP与RabbitMQ的事务和消息确认。 总的来说,理解并掌握Spring AMQP与RabbitMQ的消息确认和外部事务对于构建高可用、高可靠的...
RabbitMQ是一个开源的消息代理和队列服务器,它遵循AMQP协议,用于在分布式系统中发送和接收消息。通过使用RabbitMQ,应用程序可以解耦它们之间的通信,提高系统的可扩展性和可靠性。 Spring AMQP提供了一组API和...