上节介绍了如何实现消息的发送,这节我们接着上节说说如何实现消息的接收。
添加依赖,进行配置
同样的,消息消费者也需要添加RabbitMQ的依赖,配置连接信息。
因为在上一节已经说过了,这里过于依赖和连接信息的配置就不在赘述了。
订阅消息
新建一个OrderConsumer,用于订阅和消费消息
package com.space.rbq.store.consumer;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.io.IOException;
/**
* 负责接收处理订单服务发送的消息
* @author zhuzhe
* @date 2018/6/7 10:09
* @email 1529949535@qq.com
*/
@Slf4j
@Component
public class OrderConsumer {
/*对列名称*/
public final String QUEUE_NAME1 = "first-queue";
/**
* queues 指定从哪个队列(queue)订阅消息
* @param message
* @param channel
*/
@RabbitListener(queues = {QUEUE_NAME1})
public void handleMessage(Message message,Channel channel) throws IOException {
try {
// 处理消息
System.out.println("OrderConsumer {} handleMessage :"+message);
System.out.println(new String(message.getBody()));
}catch (Exception e){
log.error("OrderConsumer handleMessage {} , error:",message,e);
}
}
}
通过@RabbitListener订阅消息,queues参数指定从哪个队列订阅消息。
我们从first-queue(也就是上一节中消息发布到的队列)中订阅消息。
Message 消息 ; Channel 进行一些后续处理(这个会在后面的章节讲到)
测试
现在生产者和消费者都有了,我们来进行测试
启动两个服务
使用postman请求saveOrder接口
可以看到已经成功收到返回。发送执行成功。
我们看看消费者的控制台打印:
证明消息已经成功的被消费者接受。
这样,消息的生产和消费我们就基本实现了。但是,显然在真正的项目开发中是远远不能满足的。
比如消息如果没有成功消费掉又该怎么处理呢?
如果RabbitMQ服务挂了,那么消息岂不是都丢失了吗?
如何保证消息的可靠性,保证消息的正确消费,等等。这都是我们接下来需要讨论的。欢迎继续关注下节
---------------------
作者:朱_哲
来源:CSDN
原文:https://blog.csdn.net/zhuzhezhuzhe1/article/details/80704672
版权声明:本文为博主原创文章,转载请附上博文链接!