java:生产者和消费者

消息队列的生产者消费者中消费者没有收到消息怎么办,消息有顺序比如1.2.3但是收到的却是1.3.2怎么办?消息发过来的过程中损坏或者出错怎么办?
全部评论
生产者消费者模型据我所知好像不特别强调消息的有效性和顺序吧?主要是用来同步生产者和消费者之间的顺序的
点赞 回复 分享
发布于 2019-07-31 12:27
在生产者端保证顺序就好了,比如消息按顺序都放在一个队列,然后消费者端只用一个线程消费。
点赞 回复 分享
发布于 2019-07-31 13:06
从生产者的角度看,消息队列通过常见的请求确认机制保障消息的可靠传输,因此,当生产者就消息传输到broker中时,需要注意正确处理broker返回的确认或者异常信息,以保证信息可靠传输,生产者一旦收到异常消息,便会重发消息。 从broker的角度看,只要broker正常运行,就不会丢失消息。但是broker进程或者是服务器宕机了,就可能丢失消息。如果可靠性要求较高,那么可以通过设置broker参数来避免因为宕机而丢失消息,例如刷盘和复制的配置项。 从消费者的角度看,也是通过请求确认的机制来保障消息的可靠传输,可以在消费者业务处理逻辑全部结束之后再将确认响应回复给broker,若broker没有收到确认响应,那么下次消费者再次拉取消息时,仍然会拉取未成功拉取的那条消息。
2 回复 分享
发布于 2019-08-01 13:05
听着咋感觉你在说tcp、
点赞 回复 分享
发布于 2019-07-31 14:21
另外,关于消息有序性的问题,如果broker用于接收消息的topic(承载真实数据的逻辑容器)是一个分区,那么有序性是可以得到保障,但是这就会丧失其消息队列高吞吐量的能力,因此topic可以进行多个分区,那么要想保证负载均衡,我们希望尽可能将数据均匀地分散到多个分区中,这个时候设置合适的分区策略也可以保证消息的有序性,例如Key-ordering。
点赞 回复 分享
发布于 2019-08-01 16:28

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务