问题一:为什么使用消息队列
对于一个业务比较小的系统,以前的做法是直接通过一个项目集成了所有业务,比如是一个商城系统,登陆,注册,购物车,支付功能等等,一个系统把所有的事情做完了,但是随着业务的不断扩张,单纯的单一系统,已经不能再适应这个系统,我们很多时候回对整个系统进行解耦,进行分布式的开发,把一些功能细化出去,形成各种各样的子系统,那么问题来了,由于两个不同的服务器之间,两者是如何进行消息的同步的呢。,那么我们首先可能会想到诸如resetful api或者socket来实现,不过假如是socket实现的,那么对于我们开发者来说,需要我们解决的问题有很多
1、我们需要具备网络的底层知识,以及使用相应的客户端语言来实现收发信息,而且还需要定制一套相应的通信协议。
2、我们如何做到消息传递的准确性以及数据已经完整的接收.
3、解决网络中断消息传递的处理问题。
4、在多个系统之间,哪个子系统最先会受到信息.
5、对于异构系统间的数据交换,如何解决.
6、如何处理应用程序阻塞.
7、负载均衡的问题
8、子系统通信之间的地址管理
问题二:
RabbitMQ的使用过程:
大概如下
(1)client连接到消息队列服务器。
(2)声明一个exchange。
(3)声明一个queue。
(4)设置好exchange和queue之间的关系。
(5)客户端投递消息的监听。
问题三:
maven管理
我这里是通过maven来关系项目,可以在pom.xml加入spring-rabbit和amqp-client,代码如下:
<!-- http://mvnrepository.com/artifact/org.springframework.amqp/spring-rabbit -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.6.0.RELEASE</version>
</dependency>
<!-- rabbit -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.5.4</version>
</dependency>
下载好后,我们需要了解连接rabbit的一些步骤,
1、配置连接配置
2、声明template,可以通过注解中使用rabbit来收发信息
3、消息对象json转换类。
4、Queue队列的声明。
5、交换机的定义
问题四:配置Spring整合配置文件