简单整合发送
整合请移步原文:https://blog.csdn.net/qq_35387940/article/details/100514134
如何保证rabbitMQ消息不丢失
主要是针对特别重要的消息,必须成功投递、成功消费的情况。案例如下:
springboot + rabbitmq 保证消息100%投递成功并被消费,请参考
原作者 github地址: https://github.com/wangzaiplus/springboot/tree/wxw
本人删减后的github地址:https://github.com/wusong1994/springBoot-rabbitmq
生产者成功投递确认:如果投递失败超过重试次数则不管了,避免非正常情况下无限循环重试,消耗服务器资源。投递失败重试可以专门用一个定时任务进行处理。
消费者成功消费确认:具体消费者业务异常,需要重新消费的情况下,将消息放回到队列中即可(不要确认成功),消息下次会被重新投递到消费者进行消费。
主要用到一个消息发送情况记录表,以便进行重试发送消息,具体如下:
-
CREATE
TABLE
`msg_log` (
-
`msg_id`
varchar(
255)
NOT
NULL
DEFAULT
''
COMMENT
'消息唯一标识',
-
`msg`
text
COMMENT
'消息体, json格式化',
-
`exchange`
varchar(
255)
NOT
NULL
DEFAULT
''
COMMENT
'交换机',
-
`routing_key`
varchar(
255)
NOT
NULL
DEFAULT
''
COMMENT
'路由键',
-
`status`
int(
11)
NOT
NULL
DEFAULT
'0'
COMMENT
'状态: 0投递中 1投递成功 2投递失败 3已消费',
-
`try_count`
int(
11)
NOT
NULL
DEFAULT
'0'
COMMENT
'重试次数',
-
`next_try_time` datetime
DEFAULT
NULL
COMMENT
'下一次重试时间',
-
`create_time` datetime
DEFAULT
NULL
COMMENT
'创建时间',
-
`update_time` datetime
DEFAULT
NULL
COMMENT
'更新时间',
-
PRIMARY
KEY (
`msg_id`),
-
UNIQUE
KEY
`unq_msg_id` (
`msg_id`)
USING BTREE
-
)
ENGINE=
InnoDB
DEFAULT
CHARSET=utf8mb4
COMMENT=
'消息投递日志';
转载:https://blog.csdn.net/sinat_34806137/article/details/104995561
查看评论