本章主要介绍了spring REST服务以及与JMS、RabbitMQ的集成。
构建一个REST服务
常用的几个请求方式注解。
案例:
允许XML输出
1 | "/design", produces={"application/json", "text/xml"}) (path= |
url传参
1 | "/{id}") ( |
url返回404
1 | "/{id}") ( |
使用REST服务
使用RestTemplate使用REST端点
配置RestTemplate
1 |
|
获得资源(Getting resouces)
1 | public Ingredient getIngredientById(String ingredientId) { |
1 | public Ingredient getIngredientById(String ingredientId) { |
1 | public Ingredient getIngredientById(String ingredientId) { |
更新资源(Putting resouces)
1 | public void updateIngredient(Ingredient ingredient) { |
删除资源(DELETEing resources)
1 | public void deleteIngredient(Ingredient ingredient) { |
发布资源(POSTing resource data)
1 | // 方式一 |
异步发送消息
使用JMS发送消息
安装JMS
添加依赖
[pom.xml] 1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>修改spring配置文件
[spring.yml] 1
2
3
4
5spring:
activemq:
broker-url: tcp://activemq.tacocloud.com
user: tacoweb
password: l3tm31n
使用JmsTemplate发送消息
JmsTemplate有几个用于发送消息的方法,包括以下方法:
1 | // Send raw messages |
编写发送方法
1 |
|
指定发送目的地
1 | // 1.spring.yml文件 |
发送前对消息进行转换
1 |
|
配置消息转换器
1 | public interface MessageConverter { |
1 |
|
后期处理消息
在消息中添加一个自定义头。
1 | jms.send("tacocloud.order.queue", |
接收JMS消息
接收JMS TEMPLATE
核心方法:
1 | Message receive() throws JmsException; |
案例:
1 | // 案例一 |
定义消息监听器
1 |
|
使用RabbitMQ and AMQP
向Spring添加RabbitMQ
添加RabbitMQ依赖
[代码块] 1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>添加RabbitMQ配置文件
[代码块] 1
2
3
4
5
6
7spring:
profiles: prod
rabbitmq:
host: rabbit.tacocloud.com
port: 5673
username: tacoweb
password: l3tm31n
使用RabbitTemplate发送消息
RabbitTemplate几个核心方法:
1 | // Send raw messages |
案例:
1 |
|
1 | spring: |
配置消息转换器
1 |
|
设置消息属性
1 | public void sendOrder(Order order) { |
从RabbitMQ接收消息
几个关键方法:
1 | // Receive messages |
案例:
1 |
|
1 | spring: |
使用侦听器处理RABBITMQ消息
1 |
|
消息传递与Kafka(略)