使用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 2022-12-01 12:42  荣锋亮  阅读(91)  评论(0编辑  收藏  举报

导航