使用lavinmq 做为minio amqp 消息服务

环境准备

  • docker-compose
version: '3'
services:
  minio:
    image: minio/minio
    ports:
      - "9000:9000"
      - "19001:19001"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server --console-address :19001 --quiet /data
  lavinmq:
    image: cloudamqp/lavinmq:1.0.0-beta.8
    environment:
      - name=value
    volumes:
      - ./mq:/var/lib/lavinmq
    ports:
    - 5672:5672
    - 15672:15672

配置命令

  • 配置mc 管理
mc  config host add localrong  http://127.0.0.1:9000  minio minio123
 
// 注意一些exchange 以及与队列的关系需要自己配置,注意配置之后需要是需要重启的
mc admin config set localrong notify_amqp:s3notifytest \
  url="amqp://guest:guest@lavinmq:5672/demo" \
  exchange="s3notify"\
  exchange_type="direct" \
  routing_key="arn:minio:sqs::s3notify:amqp" \
  durable="on" \
  comment="s3notify"
  • 简单说明

实际上通过minio 的console 也可以进行消息通知的配置,但是不能配置名称(多个通知服务),基于mc cli 就可以
格式为notify_amqp:<name> ,这样我们就可以更好的控制消息推送了
参加存储信息

应用监听消息

  • 参考app.js
    基于nodejs 使用amqplib 包
 
const amqplib = require('amqplib');
// 需要结合实际修改队列信息
(async () => {
  const queue = 'appdemo';
  const conn = await amqplib.connect('amqp://guest:guest@localhost/demo');
 
  const ch1 = await conn.createChannel();
  await ch1.assertQueue(queue);
 
  // Listener
  ch1.consume(queue, (msg) => {
    if (msg !== null) {
      console.log('Recieved:', msg.content.toString());
      ch1.ack(msg);
    } else {
      console.log('Consumer cancelled by server');
    }
  });
 
  setInterval(() => {
    // do nothing
  }, 1000);
})();

说明

lavinmq部分设计看着是与rabbitmq 不一样的,目前从测试的结果看,如果需要minio 集成lavinmq 成功,exchange 不能先创建,需要配置以及发送数据之后
配置(与队列的关联),否则会提示有异常(目前版本测试),暂时来说lavinmq 兼容性以及稳定性暂时不是特别好,实际如果生产使用建议再等等

参考资料

https://min.io/docs/minio/linux/administration/monitoring/publish-events-to-amqp.html
https://lavinmq.com/
https://min.io/docs/minio/linux/administration/monitoring/bucket-notifications.html
https://min.io/docs/minio/linux/reference/minio-mc/mc-event-add.html#mc-event-supported-events

posted on   荣锋亮  阅读(104)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-12-01 gophercloud 不错的openstack golang sdk
2020-12-01 基于alpine docker镜像应用的参考Dockerfile配置
2020-12-01 cube.js 生产部署简单说明
2020-12-01 cube.js 官方docker镜像发布
2019-12-01 perf-tools 简单试用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示