RabbitMQ
RabbitMQ 是 erlang 写的消息队列,使用 amqp 协议。消息的幂等是由业务面保证,因为唯一标识是由消息发布者产生。而 RocketMQ 本身可以实现消息幂等。
RabbitMQ 的三方库
对于amqp协议,java 的 amqp-client(官方推荐,但是功能不是很强大)、spring-amqp(可以批量消费消息等) 和 python 的 pika (关闭消费者比较费劲,可以采用for循环的break形式)都实现了,可以用来操作 RabbitMQ 。
消费 RabbitMQ 中的消息(java 的 amqp-client)
- pom 引入 qmap-client
- 创建 ConnectionFactory
- ConnectionFactory 设置参数,比如host,port,vhost,username,password等
- newConnection 创建出 Connection
- Connection创建出Channel
- Channel和queue 用来创建出消费者
- 在handleDelivery写消费逻辑,如果设置的不是主动回复,可以用basicAck或者basicNack,basicReject来告诉服务器消费成功与否。