07
2020
11

ActiveMQ如果消息发送失败怎么办?

Activemq有两种通信方式,点到点形式和发布订阅模式。 如果是点到点模式的话,如果消息发送不成功,此消息默认会保存到activemq服务端知道有消费者将其消费,所以此时消息是不会丢失的。 如果是发布订阅模式的通信方式,默认情况下只通知一次,如果接收不到此消息就没有了。这种场景只适用于对消息送达率要求不高的情况。如果要求消息必须送达不可以丢失的话,需要配置持久订阅。每个订阅端定义一个id,在订阅是向activemq注册。发布消息和接收消息时需要配置发送模式为持久化。此时如果
07
2020
11

了解哪些消息队列?

ActiveMQ、RabbitMQ、kafka。 RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP,SMTP,STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。 ActiveMQ是Apache下的一个子项目。类似于ZeroMQ,它能够以代理人和点对点的技术实现队列。同时类似于RabbitMQ,它少量
07
2020
11

如何防止消息重复发送?

解决方法很简单:增加消息状态表。通俗来说就是一个账本,用来记录消息的处理状态,每次处理消息之前,都去状态表中查询一次。如果已经有相同的消息存在,那么不处理,可以防止重复发送。
07
2020
11

如何使用ActiveMQ解决分布式事务?

在互联网应用中,基本都会有用户注册的功能。在注册的同时,我们会做出如下操作: ● 收集用户录入信息,保存到数据库 ● 向用户的手机或邮箱发送验证码 如果是传统的集中式架构,实现这个功能非常简单:开启一个本地事务,往本地数据库中插入一条用户数据,发送验证码,提交事物。但是在分布式架构中,用户和发送验证码是两个独立的服务,它们都有各自的数据库,那么就不能通过本地事物保证操作的原子性。这时我们就需要用到ActiveMQ(消息队列)来为我们实现这个需求。在用户进行注册操作的
18
2020
10

消费顺序性如何保证

方案一:保证需要排序的消息按照先后顺序发送到同一个消费队列中,并且这个队列只有一个相应的消费者方案二:通过业务限制,保证前消息被消费完,才可以发送后消息
18
2020
10

activemq消息丢失如何处理

情况一:发送到broker时消息丢失解决:先持久到数据库,发送成功后删除或者标记删除。定时任务处理情况二:broker崩溃解决:消息持久化情况三:broker到消费端出问题解决:逻辑整理使其可以重新发送(如,发送时持久化消息并置状态为已发送,消费成功则置为已消费),当然消费要实现等幂性情况一:发送到broker时消息丢失解决:先持久到数据库,发送成功后删除或者标记删除。定时任务处理情况二:broker崩溃解决:消息持久化情况三:broker到消费端出问题解决:逻辑整理使其可以重新发送(如,发送时
18
2020
10

消息重复消费问题

可能原因:发送时消息重复、投递时消息重复消费者的接口要实现等幂性方法一:全局唯一ID:根据业务的操作和内容生成一个全局ID,在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行。方法二:去重表,建立一个去重表,去重表中设置唯一索引,如果去重表插入成功则执行方式三:多版本控制
18
2020
10

Activemq的作用以及原理

Activemq 的作用就是系统之间进行通信。 当然可以使用其他方式进行系统间通信, 如果使用 Activemq 的话可以对系统之间的调用进行解耦, 实现系统间的异步通信。 原理就是生产者生产消息, 把消息发送给activemq。 Activemq 接收到消息, 然后查看有多少个消费者, 然后把消息转发给消费者, 此过程中生产者无需参与。 消费者接收到消息后做相应的处理和生产者没有任何关系