使用Spring和AMQP发送接收消息(中)
来源:互联网 发布:java开发搜索引擎 编辑:程序博客网 时间:2024/06/06 06:54
上篇讲了RabbitMQ连接工厂的作用是用来创建RabbitMQ连接,本篇就来讲讲RabbitMQ的发送消息。通过RabbitMQ发送消息最简单的方式就是将connectionFactory Bean注入到服务层类中,并使用它创建Connection,使用这个Connection来创建Channel,再使用这个Channel发布消息到Exchange中。
当然Spring AMQP提供了RabbitTemplate来简便我们的操作,消除RabbitMQ发送和接收消息相关的样板代码。使用RabbitTemplate也是先在配置文件中写相关的配置,使用Rabbit命名空间的元素,如下:
<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。按之前配置的话,这两项默认都为空,也可以自行在元素上借助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实例和字节数组。
- 【Spring】使用Spring和AMQP发送接收消息(中)
- 使用Spring和AMQP发送接收消息(中)
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(上)
- 【Spring】使用Spring和AMQP发送接收消息(下)
- 使用Spring和AMQP发送接收消息(上)
- 使用spring-amqp发送消息及同步接收消息
- 使用spring-amqp发送消息及异步接收消息
- rabbitmq学习9:使用spring-amqp发送消息及同步接收消息
- rabbitmq学习10:使用spring-amqp发送消息及异步接收消息
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
- spring消息之使用jms发送和接收消息
- Golang使用amqp发送消息
- ActiveMQ 整合 Spring 发送和接收消息
- Spring AMQP 实现客户端发送消息
- 抛弃寻找借口的习惯
- 在VirtualBox上安装Centos 7
- Struts2中的OGNL详解
- linux之scp命令详解
- 欢迎使用CSDN-markdown编辑器
- 使用Spring和AMQP发送接收消息(中)
- 安装CentOS 7遇到的2个问题
- 在页面初始化时候 jquery easyui datebox 赋值
- 薛之谦的《暧昧》:反正现在的感情,都暧昧
- Linux硬件资源管理
- 如果32程序非要获取64位的注册表需要在打开键时,添加参数KEY_WOW64_64KEY。
- MySQL的索引机制,复合索引的使用原则
- 控制TextView左侧图片大小的方法
- kermit的安装和配置