beanrpc

package module
v0.0.0-...-323a984 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 15, 2017 License: MIT Imports: 3 Imported by: 0

README

Beanstalkd RPC

Description

Beanstalkd RPC for Go with gin-gonic syntax

Installation

go get github.com/MarinX/beanrpc

TODO and Notes

  • Better parsing handler
  • Notify for unregistered methods, methods that are not registred, will be deleted from queue
  • ...

Example

    // beanrpc
    package main

    import (
	    "github.com/MarinX/beanrpc"
	    "log"
	    "time"
    )

    type Test struct {
	    Name string
	    Age  int
    }

    func main() {

	    r := beanrpc.New("localhost:11300")

	    //opens tube for procesing
	    if err := r.Open("mytube"); err != nil {
		    log.Println(err)
		    return
	    }

	    //register method

	    r.On("mymethod", func(c *beanrpc.Context) {

		    log.Println("Buffered output->", string(c.Buff()))

		    log.Println("Job id->", c.Id())

		    //bind your type
		    var params string

		    if err := c.Bind(&params); err != nil {
			    log.Println(err)
		    }

		    log.Println("Params->", params)
	    })

	    r.On("secondmethod", func(c *beanrpc.Context) {
		    log.Println("Second method called!")

		    //can bind structs also
		    var str Test
		    c.Bind(&str)
		    log.Println(str)

	    })

	    go PushJobs(r)

	    //blocking method!
	    r.Run()

	    /*
		    OUTPUT:
			    2015/07/26 18:00:09 Buffered output->         {"Method":"mymethod","Params":"HelloWorld"}
			    2015/07/26 18:00:09 Job id-> 244
			    2015/07/26 18:00:09 Params-> HelloWorld
			    2015/07/26 18:00:09 Second method called!
			    2015/07/26 18:00:09 {Marin 22}
	    */
    }

    func PushJobs(r *beanrpc.BeanWorker) {
	    time.Sleep(2 * time.Second)

	    r.Put("mymethod", "HelloWorld", 1)

	    r.Put("secondmethod", Test{
		    Name: "Marin",
		    Age:  22,
	    }, 1)
    }

License

This library is under the MIT License

Author

Marin Basic

Documentation

Overview

beanrpc

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BeanWorker

type BeanWorker struct {
	// contains filtered or unexported fields
}

func New

func New(address string) *BeanWorker

func (*BeanWorker) Close

func (t *BeanWorker) Close() error

func (*BeanWorker) On

func (t *BeanWorker) On(name string, h HandlerFunc)

func (*BeanWorker) Open

func (t *BeanWorker) Open(tube string) error

func (*BeanWorker) Put

func (t *BeanWorker) Put(method string, params interface{}, priority uint32) error

func (*BeanWorker) Run

func (t *BeanWorker) Run()

type Context

type Context struct {
	// contains filtered or unexported fields
}

func (*Context) Bind

func (t *Context) Bind(rcv interface{}) error

func (*Context) Buff

func (t *Context) Buff() []byte

func (*Context) Id

func (t *Context) Id() uint64

type HandlerFunc

type HandlerFunc func(c *Context)

type Request

type Request struct {
	Method string
	Params interface{}
}

Directories

Path Synopsis
examples
usage command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL