From b37b7310dd08d47c619abbac7d32e0d01d5b1108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B8=CC=86=20=D0=A1?= =?UTF-8?q?=D1=82=D0=B0=D0=B4=D1=87=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Mon, 5 Sep 2022 14:03:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reconnector.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/reconnector.go b/reconnector.go index b7ab7b2..020fdaa 100644 --- a/reconnector.go +++ b/reconnector.go @@ -10,7 +10,8 @@ import ( ) type Reconnector interface { - RabbitConnect() + RabbitReConnector() + RabbitConnect() (err error) GetConnection() *amqp.Connection SubscribeTo(exhangeName string, queueName string, routingKey string) (<-chan amqp.Delivery, *amqp.Channel, error) PublishResponse(ch *amqp.Channel, exchangeName string, replyTo string, correlationId string, body string, sessionId string, content_type string) (err error) @@ -30,7 +31,7 @@ type server struct { handler ReconnectorEventHandler } -func (s *server) DoRabbitConnect() (err error) { +func (s *server) RabbitConnect() (err error) { log.WithFields(log.Fields{ "proc": "RabbitConnect", }).Warn("RabbitConnect started") @@ -83,7 +84,7 @@ func (s *server) DoRabbitConnect() (err error) { return errors.New("amqp connect error") } -func (s *server) RabbitConnect() { +func (s *server) RabbitReConnector() { for { <-s.AmqpCloseError @@ -93,7 +94,7 @@ func (s *server) RabbitConnect() { s.ExitSignal <- true - err := s.DoRabbitConnect() + err := s.RabbitConnect() if err != nil { log.WithFields(log.Fields{ "error": err, @@ -108,7 +109,7 @@ func (s *server) GetConnection() *amqp.Connection { return s.AmqpConnection } -func New(amqpHost string, handler ReconnectorEventHandler) Reconnector { +func New(amqpHost string, handler ReconnectorEventHandler) (Reconnector, error) { s := server{ AmqpCloseError: make(chan *amqp.Error), amqpHostName: amqpHost, @@ -119,5 +120,12 @@ func New(amqpHost string, handler ReconnectorEventHandler) Reconnector { s.handler = handler } - return &s + go s.RabbitConnect() + + err := s.RabbitConnect() + if err != nil { + return nil, err + } + + return &s, nil }