Code Monkey home page Code Monkey logo

msmq's Introduction

MSMQ

以MySQL做为持久化存储的消息队列。满足简单,性能不苛刻的场景。

使用

mopts := Options{
    Debug:     false,
    User:      "",
    Password:  "",
    Address:   "",
    DBName:    "msmq",
    TableName: "mq",
}
store, err := NewMysqlStore(&mopts, DefaultPayload)
if err != nil {
    return nil, err
}

opts := msmq.Options{}
mq := msmq.NewMessageQueue(&opts, log.New(os.Stderr, "", log.LstdFlags), store)

go func() {
    ch := mq.Consume(context.Background(), "test")

    for msg := range ch {
        if err := msg.Start(); err != nil {
            t.Error(err)
        }

        p, err := msg.Payload()
        if err != nil {
            t.Error(err)
        }

        // 实际消费消息
        fmt.Printf("%s: %s\n", msg.Topic(), string(p.([]byte)))

        if err := msg.Done(); err != nil {
            t.Error(err)
        }
    }
}()

if err := mq.Produce("test", []byte("test data")); err != nil {
    t.Error(err)
}

next

  • 有客户端保留消费偏移量,方便重放。
  • 支持Pub/Sub
  • 考虑批量插入,批量更新,提高并发时的效率
  • func (mq *MessageQueue) Consume(ctx context.Context, topic string) <-chan Message { 该函数中的 id 可以去掉
  • type Message interface { 中id可以去掉

msmq's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.