JMS
消息队列
孤独的背影
这个作者很懒,什么都没留下…
展开
-
4、 如何保证消息的可靠性传输(如果处理消息丢失的问题)
消息丢失分为两种情况:消费端丢失数据:消费端消费数据,会自动提交offset,如果数据没有消费,但是已经提交了offset,此时消费端宕机,这样就导致消息丢失。可以设置手工提交offset。Kafka丢失数据:数据是在partition,如果所在的broker宕机了,而此时数据来不及同步到其它节点的副本,导致会丢失部分数据,为了保证数据不丢失,在数据发送到Leader,同时数据同步到其它副本,此时的ack才确认已经收到消息,这样的话,就保证kafka不会丢失数据. Ack有三种方式:数据发送到leade原创 2022-07-11 15:02:53 · 231 阅读 · 0 评论 -
消息队列满了以后该怎么处理?
什么情况下会造成消息积压:可能是消费端宕机、或者消费端消费能力更不上生产者的速度解决方案:1、增加资源,新建一个topic,增加partiton个数,比如原来是3个,那现在扩容30个,然后新增30个消费者进行消费,等到积压消息处理完了,再改回原本的消费者中2、如果长时间没有进行数据消费导致磁盘满了,同时又不能扩容,那只能丢失部分数据。 或者新建一个消费者,把数据存到另外一个地方...原创 2022-07-11 11:21:12 · 2120 阅读 · 0 评论 -
如何保证数据的顺序性
如何保证数据的顺序性(1):kafka写入patition的数据是有顺序的:消息发送到MQ,可以把不同的消息封装到不同点的对象中,这样的话,相同的消息就会发送到同一个partition中(2):一个partition对应一个consumer,消费者把数据可以放在队列中,多线程可以从队列中消费数据,这样就保证数据消费的顺序性...原创 2022-07-11 11:02:25 · 291 阅读 · 0 评论 -
JMS-为什么要使用消息队列
在使用jms消息队列时候,都不清楚我们为什么要使用jms,大部分只是在停留在使用层面上,下面通过几种场景介绍jms使用场景1:系统解耦,目前在开发大部分的系统的时候,都需要系统之间的相互交互,交互方式,可以使用微服务,可以使用restful接口,也可以使用其它等方式,不管通过哪种方式,都是为了系统之间的解耦。通过使用jms进行解耦,系统之间不需要彼此直接关注,同时可以根据自身的业务需求,随时进行数据消费。这样的方式,比前面提到的解耦方式更加灵活2:异步:使用jms提供服务,可以使同步的几个接口保持异步执原创 2022-07-11 10:50:07 · 137 阅读 · 0 评论