个人随笔
目录
分布式消息系统与中间件面试题目
2019-03-25 22:39:10

1、消息中间件产生的背景

传统的Web项目采用http协议基于请求和响应传输信息,请求发出后必须等待服务器端响应,如果服务器端不会及时响应客户端会一直等待。

2、Http协议同步接口调用失败了怎么做

采用消息补偿机制重新发送请求。就是消息重发。

3、消息队列异步通讯与同步通讯区别

同步通讯是客户端直接将请求发往服务器,等待服务器处理完请求并返回响应信息后才会继续向下执行。消息队列独立于客户端和服务器端,单独架设消息队列服务器,对于不必立即获取响应和处理过程复杂的请求,客户端可以将请求发往消息队列然后立即返回,指定的消费者处理请求,这样客户端不必持续等待。

4、JMS消息通讯模型有那些

消息队列:点对点,发布订阅。

5、消息中间应用场景

发送邮件或短信的服务、秒杀、运行过程复杂耗时的服务。

6、发布订阅与点对点通讯的区别

发布订阅是生产者发布一个主题,所有订阅该主题的消费者都会参与消费,消息会被重复消费。点对点通讯是一个消息只能有一个消费者消费,需要保证数据的幂等性。

7、如何保证JMS可靠消息

ActiveMQ采用消息签收机制保证数据的可靠性,消息签收有三种方式:自动签收、手动签收、事务,默认自动签收。如果是带事务的消息,事务执行完毕后自动签收,事务回滚则重新发送。

8、ActiveMQ服务端宕机了,消息会丢失吗

生产者可以通过setDeliveryMode方法设置消息模式,当设置未非持久化时服务器宕机后消息将销毁,重启服务器后无法继续消费。当设置为持久化时服务器宕机后消息将保存到服务器中,重启后消费者还可以继续消费未处理完毕的消息。

9、RabbitMQ与其他MQ有什么不同

RabbitMQ是用erlang语言实现,安装RabbitMQ之前需要先安装erlang环境。RabbitMQ只支持AMQP协议,用于对稳定性要求比较高的企业。

10、RabbitMQ virtualHost的作用

VirtualHost相当于是虚拟的RabbitMQ服务器,每个VirtualHost都是独立的,起到隔离交换机、队列的作用,不同的项目组可以连接到不同的VirtualHost不会互相影响。

11、谈谈RabbitMQ五种列队形式

  1. 点对点模式:生产者生成的消息由一个消费者消费;
  2. 工作模式:在消费者集群的情况下,可以根据消费者服务器的性能分配消息,即性能好的服务器多消费,性能次的少消费。
  3. 发布订阅模式:在生产者和队列之间插入一个交换机,由交换机转发到与该交换机绑定的队列;
  4. 路由模式:路由模式是基于发布订阅模式,只是在生产者向交换机生产消息时绑定一个routingkey,交换机向绑定同一个routingkey的队列转发消息;
  5. 通配符模式:是对路由模式的补充,使用通配符进行routingkey匹配,通配符有#和*,#代表匹配多个,*代表匹配一个。

12、RabbitMQ四中交换机类型

  1. Fanout:以这种方式连接到交换机的队列都可以获得交换机的转发;
  2. Direct:生产者绑定direct类型的交换机,在向交换机发送消息时绑定routingkey,交换机会将这条消息发送到相同routingkey的队列。
  3. Topic:和Direct相似,可以在routingKey中使用通配符,#代表多个匹配,*代表单个匹配,routingkey使用”.”作为分隔符。
  4. Headers:类似Direct,使用多个消息代替路由键建立路由规则,通过消息头匹配来转发消息。

13、RabbitMQQMAP协议原理

在RabbitMQ中,生产者将消息发送到交换机,交换机将消息根据路由策略将消息发送到绑定的消息队列,消费者通过消息队列获取并消费消息。

 241

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2