Git Product home page Git Product logo

rmqgo's Introduction

๐Ÿฐ rmqgo

Go Version License

Wrapper of rabbitmq/amqp091-go that provides some features.

Installation

go get github.com/Almazatun/rmqgo

Connect to rabbitMQ

import (rmqgo "github.com/Almazatun/rmqgo")

rmq := rmqgo.New()

config := rmqgo.ConnectConfig{
	User: "user",
	Pass: "pass",
	Host: "host",
	Port: "port",
}

err := rmq.Connect(config)

if err != nil {
	// some action
}

Optional params when initialize rmqgo.New()

With RPC mode for request and replay pattern

rmqgo.New(rmqgo.WithRpc(replayQueueName, exchangeType))

With topic RPC

rmqgo.New(rmqgo.WithTopicRpc(replayQueueName, exchangeType, routingKey))

Create channel

ch, err := rmq.CreateChannel()

if err != nil {
	// some action
}

Create queue

args := make(map[string]interface{})

q, err := rmq.CreateQueue(rmqgo.CreateQueueConfig{
	Name:         "some_name",
	DeleteUnused: false,
	Exclusive:    false,
	NoWait:       false,
	Durable:      true,
	Args:         &args,
})

if err != nil {
	// some action
}

Create exchange

Exchanges

RmqDirect
RmqTopic
RmqFanout
RmqHeaders

Exchange types

Direct
Topic
Fanout
args := make(map[string]interface{})

err := rmq.CreateExchange(rmqgo.CreateExchangeConfig{
	Name:       rmqgo.Exchanges.RmqDirect,
	Type:       rmqgo.ExchangeType.Direct,
	Durable:    true,
	AutoDelete: false,
	Internal:   false,
	NoWait:     false,
	Args:       &args,
})

if err != nil {
	// some action
}

Bind exchange by created queue

args := make(map[string]interface{})

err := rmq.BindQueueByExchange(rmqgo.BindQueueByExgConfig{
	QueueName:    "some_name",
	RoutingKey:   "some_key",
	ExchangeName: Exchanges.RmqDirect,
	NoWait:       false,
	Args:         &args,
})

if err != nil {
	// some action
}

Create producer

producer = rmqgo.NewProducer(&rmq)

Send message

err := producer.Send(Exchanges.RmqDirect, routingKey, msg, method)

if err != nil {
	// some action
}

Send message with reply

b, err := producer.SendReplyMsg(Exchanges.RmqDirect, routingKey, msg, method)

if err != nil {
	// some action
}

// msg - is your own type SomeName struct { someFields:... }

err = json.Unmarshal(*b, &msg)

if err != nil {
	// some action
}

Create consumer

consumer := rmqgo.NewConsumer(
		&rmq,
		rmqgo.WithConsumerConfig(rmqgo.CreateConsumerConfig{
			NameQueue: "some_name",
			Consumer:  "some_value",
			AutoAck:   false,
			Exclusive: false,
			NoWait:    false,
			NoLocal:   false,
		}),
	)

consumer.Listen()

Optional params when initialize rmqgo.NewConsumer(...)

With HttpConsumer

rmqgo.NewConsumer(*rmq, rmqgo.WithHttpConsumer())

With Consumer Args

rmqgo.NewConsumer(*rmq, rmqgo.WithConsumerArgs(rmqgo.ConsumerArgs{
	XDeadLetterExc        *""
	XDeadLetterRoutingKey *""
	Ttl                   *int
	XExpires              *int
	XMaxPriority          *int
}))

rmqgo's People

Contributors

almazatun avatar

Watchers

 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.