消息中间件面试题目汇总(很好用哦)

1. activemq 的几种通信方式
         publish(发布)-subscribe(订阅)(发布-订阅方式)
         发布/订阅方式用于多接收客户端的方式.作为发布订阅的方式,可能存在多个接收客户端,并且接收端客户端与发送客户端存在时间上的依赖。一个接收端只能接收他创建以后发送客户端发送的信息。作为 subscriber ,在接收消息时有两种方法destination 的 receive 方法,和实现 message listener 接口的onMessage 方法。 
         p2p(point-to-point)(点对点)
p2p 的过程则理解起来比较简单。它好比是两个人打电话,这两个人是独享这一条通信链路的。一方发送消息,另外一方接收,就这么简单。在实际应用中因为有多个用户对使用 p2p 的链路。在 p2p 的场景里,相互通信的双方是通过一个类似于队列的方式来进行交流。和前面 pub-sub 的区别在于一个 topic 有一个发送者和多个接收者,而在 p2p里一个 queue 只有一个发送者和一个接收者。
2. activemq 如果数据提交不成功怎么办(消息丢失)
         1. publish(发布)-subscribe(订阅)方式的处理发布订阅模式的通信方式, 默认情况下只通知一次, 如果接收不到此消息就没
有了。 这种场景只适用于对消息送达率要求不高的情况。 如果要求消息必须送达不可以丢失的话, 需要配置持久订阅。 每个订阅端定义一个 id,<property name="clientId" 在订阅是向 activemq 注册。 发布消息<property name="subscriptionDurable" value="true"/>和接收消息时需要配置发送模式为持久化template.setDeliveryMode(DeliveryMode. PERSISTENT );。 此时如果客户端接收不到消息, 消息会持久化到服务端(就是硬盘上), 直到客户端正常接收后为止。
         1. 4.2p - p(点对点)方式的处理点对点模式的话, 如果消息发送不成功此消息默认会保到 activemq 服务端直到有消费者将其消费, 所以此时消息是不会丢失的。
3.如何解决消息重复问题
         所谓消息重复,就是消费者接收到了重复的消息,一般来说我们对于这个问题的处
         理要把握下面几点,
         ①.消息不丢失(上面已经处理了)
         ②.消息不重复执行
         一般来说我们可以在业务段加一张表,用来存放消息是否执行成功,每次业务事物commit 之后,告知服务端,已经处理过该消息,
这样即使你消息重发了,也不会导致重复处理
       

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值