From 6948e2e9d495abe55bf875e11958d7383066cf09 Mon Sep 17 00:00:00 2001 From: Andrey Ivanov Date: Tue, 4 May 2021 18:18:49 +0300 Subject: [PATCH] HW15 WIP --- .run/calendar.run.xml | 12 +++++ .run/scheduler.run.xml | 13 ++++++ .run/sender.run.xml | 13 ++++++ hw12_13_14_15_calendar/Makefile | 6 +-- hw12_13_14_15_calendar/cmd/scheduler/main.go | 8 ++-- hw12_13_14_15_calendar/configs/sender.conf | 2 +- hw12_13_14_15_calendar/go.mod | 5 +- hw12_13_14_15_calendar/go.sum | 46 +++++++++++++++++++ .../internal/sender/app_sender.go | 18 ++++---- .../internal/sheduler/scheduler.go | 2 +- hw12_13_14_15_calendar/pkg/rabbit/consumer.go | 6 ++- hw12_13_14_15_calendar/pkg/rabbit/producer.go | 24 ++++++---- hw12_13_14_15_calendar/pkg/rabbit/rabbit.go | 18 ++++---- hw12_13_14_15_calendar/test/main_test.go | 12 +++-- 14 files changed, 139 insertions(+), 46 deletions(-) create mode 100644 .run/calendar.run.xml create mode 100644 .run/scheduler.run.xml create mode 100644 .run/sender.run.xml diff --git a/.run/calendar.run.xml b/.run/calendar.run.xml new file mode 100644 index 0000000..d622a14 --- /dev/null +++ b/.run/calendar.run.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.run/scheduler.run.xml b/.run/scheduler.run.xml new file mode 100644 index 0000000..0a4c686 --- /dev/null +++ b/.run/scheduler.run.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.run/sender.run.xml b/.run/sender.run.xml new file mode 100644 index 0000000..606a2d9 --- /dev/null +++ b/.run/sender.run.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/hw12_13_14_15_calendar/Makefile b/hw12_13_14_15_calendar/Makefile index 68278dd..10720f7 100644 --- a/hw12_13_14_15_calendar/Makefile +++ b/hw12_13_14_15_calendar/Makefile @@ -47,14 +47,14 @@ sender-up: sender-down: docker-compose -f ./cicd/dc_sender.yml down -sheduler-up: +scheduler-up: docker-compose -f ./cicd/dc_sheduler.yml up -d --build -sheduler-down: +scheduler-down: docker-compose -f ./cicd/dc_sheduler.yml down sup-up: docker-compose -f ./cicd/dc_sup.yml up -d --build sup-down: - docker-compose -f ./cicd/dc_sup.yml down + docker-compose -f ./cicd/dc_sup.yml down --rmi local -v .PHONY: build run test lint \ No newline at end of file diff --git a/hw12_13_14_15_calendar/cmd/scheduler/main.go b/hw12_13_14_15_calendar/cmd/scheduler/main.go index b94c8d9..c9bc8ee 100644 --- a/hw12_13_14_15_calendar/cmd/scheduler/main.go +++ b/hw12_13_14_15_calendar/cmd/scheduler/main.go @@ -2,13 +2,15 @@ package main import ( "flag" - _ "github.com/go-sql-driver/mysql" - "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/internal/sheduler" - "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/pkg/config" "log" "os" "os/signal" "syscall" + + _ "github.com/go-sql-driver/mysql" + + "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/internal/sheduler" + "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/pkg/config" ) var configFile string diff --git a/hw12_13_14_15_calendar/configs/sender.conf b/hw12_13_14_15_calendar/configs/sender.conf index da6ef69..3abe61e 100644 --- a/hw12_13_14_15_calendar/configs/sender.conf +++ b/hw12_13_14_15_calendar/configs/sender.conf @@ -11,6 +11,6 @@ Key = "events" File = "./logs/calendar.log" Level = "INFO" -[API] +[CalendarAPI] Address = "localhost" Port = "50053" \ No newline at end of file diff --git a/hw12_13_14_15_calendar/go.mod b/hw12_13_14_15_calendar/go.mod index 854a676..762aed8 100644 --- a/hw12_13_14_15_calendar/go.mod +++ b/hw12_13_14_15_calendar/go.mod @@ -5,6 +5,7 @@ go 1.14 require ( github.com/BurntSushi/toml v0.3.1 github.com/amitrai48/logger v0.0.0-20190214092904-448001c055ec + github.com/daixiang0/gci v0.2.8 // indirect github.com/go-sql-driver/mysql v1.5.0 github.com/golang/protobuf v1.4.2 github.com/gorilla/mux v1.8.0 @@ -16,12 +17,8 @@ require ( github.com/streadway/amqp v1.0.0 github.com/stretchr/testify v1.6.1 go.uber.org/zap v1.15.0 // indirect - golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 // indirect - golang.org/x/text v0.3.3 // indirect - golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305 // indirect google.golang.org/genproto v0.0.0-20200815001618-f69a88009b70 google.golang.org/grpc v1.32.0 - google.golang.org/protobuf v1.25.0 // indirect gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect gopkg.in/yaml.v2 v2.3.0 // indirect ) diff --git a/hw12_13_14_15_calendar/go.sum b/hw12_13_14_15_calendar/go.sum index 1c88ff2..63344a1 100644 --- a/hw12_13_14_15_calendar/go.sum +++ b/hw12_13_14_15_calendar/go.sum @@ -6,13 +6,18 @@ github.com/amitrai48/logger v0.0.0-20190214092904-448001c055ec/go.mod h1:RZEHP3c github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/daixiang0/gci v0.2.8 h1:1mrIGMBQsBu0P7j7m1M8Lb+ZeZxsZL+jyGX4YoMJJpg= +github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -29,13 +34,18 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -67,9 +77,11 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -92,7 +104,9 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -103,11 +117,17 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210504132125-bbd867fde50d h1:nTDGCTeAu2LhcsHTRzjyIUbZHCJ4QePArsm27Hka0UM= +golang.org/x/net v0.0.0-20210504132125-bbd867fde50d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -116,9 +136,22 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 h1:W0lCpv29Hv0UaM1LXb9QlBHLNP8UFfcKjblhVCWftOM= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 h1:cdsMqa2nXzqlgs183pHxtvoVwU7CyzaCTAUOg94af4c= +golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -128,12 +161,16 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305 h1:yaM5S0KcY0lIoZo7Fl+oi91b/DdlU2zuWpfHrpWbCS0= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20201118003311-bd56c0adb394/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -141,12 +178,17 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200815001618-f69a88009b70 h1:wboULUXGF3c5qdUnKp+6gLAccE6PRpa/czkYvQ4UXv8= google.golang.org/genproto v0.0.0-20200815001618-f69a88009b70/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210504143626-3b2ad6ccc450 h1:iSifhRHb9+Pi325BWlAfpJbuG2YXlBoHE2aEFJY/Pg8= +google.golang.org/genproto v0.0.0-20210504143626-3b2ad6ccc450/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -155,9 +197,13 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= diff --git a/hw12_13_14_15_calendar/internal/sender/app_sender.go b/hw12_13_14_15_calendar/internal/sender/app_sender.go index 04880d3..7610b64 100644 --- a/hw12_13_14_15_calendar/internal/sender/app_sender.go +++ b/hw12_13_14_15_calendar/internal/sender/app_sender.go @@ -54,17 +54,17 @@ func (s *Sender) Start() error { for { select { case m := <-msg: - var data []private.Event - err := json.Unmarshal(m.Data, &data) - if err != nil { - s.Logger.Errorf("can`t unmarshal data %w", err) - } - for _, v := range data { - _, err = s.GRPCAPI.SetNotified(ctx, &private.SetReq{ID: v.ID}) + if m.Data != nil { + var data private.Event + err := json.Unmarshal(m.Data, &data) if err != nil { - s.Logger.Errorf("can`t mark event with ID %d as notified data %w", v.ID, err) + s.Logger.Errorf("can`t unmarshal data %w", err) } - s.Logger.Infof("User %s notified about event %s", v.UserID, v.ID) + _, err = s.GRPCAPI.SetNotified(ctx, &private.SetReq{ID: data.ID}) + if err != nil { + s.Logger.Errorf("can`t mark event with ID %d as notified data %w", data.ID, err) + } + s.Logger.Infof("User %s notified about event %s", data.UserID, data.ID) } case <-ctx.Done(): return diff --git a/hw12_13_14_15_calendar/internal/sheduler/scheduler.go b/hw12_13_14_15_calendar/internal/sheduler/scheduler.go index a00a71a..e7334e7 100644 --- a/hw12_13_14_15_calendar/internal/sheduler/scheduler.go +++ b/hw12_13_14_15_calendar/internal/sheduler/scheduler.go @@ -53,7 +53,7 @@ func worker(ctx context.Context, calendarAPI config.Server, rb *rabbit.Rabbit, l if err != nil { return fmt.Errorf("can't marshal events into JSON: %w", err) } - err = rb.Publish(string(b)) + err = rb.Publish(b) if err != nil { return fmt.Errorf("can't publish serialized data to RabbitMQ: %w", err) } diff --git a/hw12_13_14_15_calendar/pkg/rabbit/consumer.go b/hw12_13_14_15_calendar/pkg/rabbit/consumer.go index 8182005..1505221 100644 --- a/hw12_13_14_15_calendar/pkg/rabbit/consumer.go +++ b/hw12_13_14_15_calendar/pkg/rabbit/consumer.go @@ -19,7 +19,11 @@ type Message struct { func (r *Rabbit) Consume(ctx context.Context, queue string) (<-chan Message, error) { messages := make(chan Message) - deliveries, err := r.Channel.Consume(queue, "", false, false, false, false, nil) + ch, err := r.Connection.Channel() + if err != nil { + return nil, fmt.Errorf("can't get channel from AMQP connection: %w", err) + } + deliveries, err := ch.Consume(queue, "", false, false, false, false, nil) if err != nil { return nil, fmt.Errorf("start consuming: %w", err) } diff --git a/hw12_13_14_15_calendar/pkg/rabbit/producer.go b/hw12_13_14_15_calendar/pkg/rabbit/producer.go index 708bd63..51a0b6e 100644 --- a/hw12_13_14_15_calendar/pkg/rabbit/producer.go +++ b/hw12_13_14_15_calendar/pkg/rabbit/producer.go @@ -1,28 +1,34 @@ package rabbit import ( - "encoding/json" "fmt" + "log" "github.com/streadway/amqp" ) -func (r *Rabbit) Publish(body string) error { - b, err := json.Marshal([]byte(body)) +func (r *Rabbit) Publish(b []byte) error { + ch, err := r.Connection.Channel() + defer func() { + if err := ch.Close(); err != nil { + log.Println("can't close AMQP connection") + } + }() if err != nil { - return fmt.Errorf("can't marshal message body into JSON: %w", err) + return fmt.Errorf("can't get channel from AMQP connection: %w", err) } - err = r.Channel.Publish( + err = ch.Publish( r.Exchange, // exchange r.Key, // routing key - false, // mandatory + true, // mandatory false, // immediate amqp.Publishing{ - ContentType: "application/json; charset=utf-8", - Body: b, + DeliveryMode: amqp.Persistent, + ContentType: "application/json; charset=utf-8", + Body: b, }) if err != nil { - return fmt.Errorf("can't publish message into RabbitMQ exchange: %w", err) + return fmt.Errorf("can't publish message into RabbitMQ: %w", err) } return nil } diff --git a/hw12_13_14_15_calendar/pkg/rabbit/rabbit.go b/hw12_13_14_15_calendar/pkg/rabbit/rabbit.go index b893dc6..b2932ac 100644 --- a/hw12_13_14_15_calendar/pkg/rabbit/rabbit.go +++ b/hw12_13_14_15_calendar/pkg/rabbit/rabbit.go @@ -2,13 +2,13 @@ package rabbit import ( "fmt" + "log" "github.com/streadway/amqp" ) type Rabbit struct { Connection *amqp.Connection - Channel *amqp.Channel Exchange string Key string Queue string @@ -30,6 +30,11 @@ func New(conf Config) (*Rabbit, error) { return nil, fmt.Errorf("can't dial RabbitMQ over AMQP: %w", err) } ch, err := conn.Channel() + defer func() { + if err := ch.Close(); err != nil { + log.Println("can't close AMQP connection") + } + }() if err != nil { return nil, fmt.Errorf("can't get channel from AMQP connection: %w", err) } @@ -60,7 +65,7 @@ func New(conf Config) (*Rabbit, error) { if err != nil { return nil, fmt.Errorf("can't bind Queue on Exchange in RabbitMQ: %w", err) } - return &Rabbit{Connection: conn, Channel: ch}, nil + return &Rabbit{Connection: conn, Exchange: conf.Exchange, Key: conf.Key, Queue: conf.Queue}, nil } func Attach(conf Config) (*Rabbit, error) { @@ -68,17 +73,10 @@ func Attach(conf Config) (*Rabbit, error) { if err != nil { return nil, fmt.Errorf("can't dial RabbitMQ over AMQP: %w", err) } - ch, err := conn.Channel() - if err != nil { - return nil, fmt.Errorf("can't get channel from AMQP connection: %w", err) - } - return &Rabbit{Connection: conn, Channel: ch, Exchange: conf.Exchange, Queue: conf.Queue, Key: conf.Key}, nil + return &Rabbit{Connection: conn, Exchange: conf.Exchange, Queue: conf.Queue, Key: conf.Key}, nil } func (r *Rabbit) Close() error { - if err := r.Channel.Close(); err != nil { - return fmt.Errorf("can't close connection channel: %w", err) - } if err := r.Connection.Close(); err != nil { return fmt.Errorf("can't close connection: %w", err) } diff --git a/hw12_13_14_15_calendar/test/main_test.go b/hw12_13_14_15_calendar/test/main_test.go index 4121222..dd30367 100644 --- a/hw12_13_14_15_calendar/test/main_test.go +++ b/hw12_13_14_15_calendar/test/main_test.go @@ -2,14 +2,16 @@ package main import ( "context" - "github.com/stretchr/testify/require" - "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/pkg/api/public" - "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/test/client" - "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/test/misc" "log" "sync" "testing" "time" + + "github.com/stretchr/testify/require" + + "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/pkg/api/public" + "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/test/client" + "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/test/misc" ) func TestPublicAPIEndpoints(t *testing.T) { @@ -165,7 +167,7 @@ func TestPublicAPIEndpoints(t *testing.T) { require.NoError(t, err) require.Greater(t, resp1.ID, int64(0)) ids = append(ids, resp1.ID) - time.Sleep(3 * time.Second) + time.Sleep(5 * time.Second) resp2, err := c.GetByID(&public.GetByIDReq{ID: resp1.ID}) require.NoError(t, err)