Add grpc client in broker service
This commit is contained in:
		
							
								
								
									
										53
									
								
								broker-service/event/emitter.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								broker-service/event/emitter.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
			
		||||
package event
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"log"
 | 
			
		||||
 | 
			
		||||
	amqp "github.com/rabbitmq/amqp091-go"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Emitter struct {
 | 
			
		||||
	conn *amqp.Connection
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewEmitter(conn *amqp.Connection) (Emitter, error) {
 | 
			
		||||
	emitter := Emitter{
 | 
			
		||||
		conn: conn,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := emitter.setup()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return Emitter{}, err
 | 
			
		||||
	}
 | 
			
		||||
	return emitter, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (emitter *Emitter) setup() error {
 | 
			
		||||
	channel, err := emitter.conn.Channel()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer channel.Close()
 | 
			
		||||
 | 
			
		||||
	return declaireExchange(channel)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (emitter *Emitter) Push(event string, severity string) error {
 | 
			
		||||
	ch, err := emitter.conn.Channel()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer ch.Close()
 | 
			
		||||
 | 
			
		||||
	log.Println("Pushing to channel")
 | 
			
		||||
 | 
			
		||||
	err = ch.Publish("logs_topic", severity, false, false, amqp.Publishing{
 | 
			
		||||
		ContentType: "text/plain",
 | 
			
		||||
		Body:        []byte(event),
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								broker-service/event/event.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								broker-service/event/event.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
package event
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	amqp "github.com/rabbitmq/amqp091-go"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func declaireExchange(ch *amqp.Channel) error {
 | 
			
		||||
	return ch.ExchangeDeclare(
 | 
			
		||||
		"logs_topic", // name
 | 
			
		||||
		"topic",      // type
 | 
			
		||||
		true,         // durable?
 | 
			
		||||
		false,        // auto-deleted?
 | 
			
		||||
		false,        // internal?
 | 
			
		||||
		false,        // no-wait?
 | 
			
		||||
		nil,          // arguments?
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func declaireRandomQueue(ch *amqp.Channel) (amqp.Queue, error) {
 | 
			
		||||
	return ch.QueueDeclare(
 | 
			
		||||
		"",    // name
 | 
			
		||||
		false, // durable
 | 
			
		||||
		false, // delete when unused
 | 
			
		||||
		true,  // exclusive
 | 
			
		||||
		false, // nowait
 | 
			
		||||
		nil,   // table
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user