From b9f604b3c1b5e3098b7448048f82a365ef303efd Mon Sep 17 00:00:00 2001 From: dmitry Date: Tue, 12 Nov 2024 02:21:31 +0400 Subject: [PATCH] afanasev_dmitry_lab_4 is ready --- afanasev_dmitry_lab_4/README.md | 16 +++ afanasev_dmitry_lab_4/images/img1.png | Bin 0 -> 25405 bytes afanasev_dmitry_lab_4/images/img2.png | Bin 0 -> 23922 bytes afanasev_dmitry_lab_4/images/img3.png | Bin 0 -> 25265 bytes afanasev_dmitry_lab_4/lesson1/.gitignore | 38 ++++++ .../lesson1/.idea/.gitignore | 8 ++ .../lesson1/.idea/encodings.xml | 7 + afanasev_dmitry_lab_4/lesson1/.idea/misc.xml | 23 ++++ .../lesson1/.idea/uiDesigner.xml | 124 ++++++++++++++++++ afanasev_dmitry_lab_4/lesson1/.idea/vcs.xml | 6 + .../lesson1/out/ru/ulstu/Main.class | Bin 0 -> 423 bytes .../lesson1/out/ru/ulstu/Recv.class | Bin 0 -> 2622 bytes .../lesson1/out/ru/ulstu/Send.class | Bin 0 -> 2225 bytes afanasev_dmitry_lab_4/lesson1/pom.xml | 25 ++++ .../lesson1/src/main/java/ru/ulstu/Recv.java | 29 ++++ .../lesson1/src/main/java/ru/ulstu/Send.java | 24 ++++ afanasev_dmitry_lab_4/lesson2/.gitignore | 38 ++++++ .../lesson2/.idea/.gitignore | 8 ++ .../lesson2/.idea/encodings.xml | 7 + afanasev_dmitry_lab_4/lesson2/.idea/misc.xml | 23 ++++ afanasev_dmitry_lab_4/lesson2/.idea/vcs.xml | 6 + afanasev_dmitry_lab_4/lesson2/pom.xml | 25 ++++ .../src/main/java/ru/ulstu/NewTask.java | 29 ++++ .../src/main/java/ru/ulstu/Worker.java | 48 +++++++ afanasev_dmitry_lab_4/lesson3/.gitignore | 38 ++++++ .../lesson3/.idea/.gitignore | 8 ++ .../lesson3/.idea/encodings.xml | 7 + afanasev_dmitry_lab_4/lesson3/.idea/misc.xml | 23 ++++ .../lesson3/.idea/uiDesigner.xml | 124 ++++++++++++++++++ afanasev_dmitry_lab_4/lesson3/.idea/vcs.xml | 6 + afanasev_dmitry_lab_4/lesson3/pom.xml | 25 ++++ .../src/main/java/ru/ulstu/EmitLog.java | 25 ++++ .../src/main/java/ru/ulstu/ReceiveLogs.java | 33 +++++ afanasev_dmitry_lab_4/task/.gitignore | 38 ++++++ afanasev_dmitry_lab_4/task/.idea/.gitignore | 8 ++ .../task/.idea/encodings.xml | 7 + afanasev_dmitry_lab_4/task/.idea/misc.xml | 23 ++++ .../task/.idea/uiDesigner.xml | 124 ++++++++++++++++++ afanasev_dmitry_lab_4/task/.idea/vcs.xml | 6 + afanasev_dmitry_lab_4/task/pom.xml | 25 ++++ .../main/java/ru/ulstu/OrderConsumer1.java | 38 ++++++ .../main/java/ru/ulstu/OrderConsumer2.java | 34 +++++ .../main/java/ru/ulstu/OrderPublisher.java | 26 ++++ 43 files changed, 1102 insertions(+) create mode 100644 afanasev_dmitry_lab_4/README.md create mode 100644 afanasev_dmitry_lab_4/images/img1.png create mode 100644 afanasev_dmitry_lab_4/images/img2.png create mode 100644 afanasev_dmitry_lab_4/images/img3.png create mode 100644 afanasev_dmitry_lab_4/lesson1/.gitignore create mode 100644 afanasev_dmitry_lab_4/lesson1/.idea/.gitignore create mode 100644 afanasev_dmitry_lab_4/lesson1/.idea/encodings.xml create mode 100644 afanasev_dmitry_lab_4/lesson1/.idea/misc.xml create mode 100644 afanasev_dmitry_lab_4/lesson1/.idea/uiDesigner.xml create mode 100644 afanasev_dmitry_lab_4/lesson1/.idea/vcs.xml create mode 100644 afanasev_dmitry_lab_4/lesson1/out/ru/ulstu/Main.class create mode 100644 afanasev_dmitry_lab_4/lesson1/out/ru/ulstu/Recv.class create mode 100644 afanasev_dmitry_lab_4/lesson1/out/ru/ulstu/Send.class create mode 100644 afanasev_dmitry_lab_4/lesson1/pom.xml create mode 100644 afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Recv.java create mode 100644 afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Send.java create mode 100644 afanasev_dmitry_lab_4/lesson2/.gitignore create mode 100644 afanasev_dmitry_lab_4/lesson2/.idea/.gitignore create mode 100644 afanasev_dmitry_lab_4/lesson2/.idea/encodings.xml create mode 100644 afanasev_dmitry_lab_4/lesson2/.idea/misc.xml create mode 100644 afanasev_dmitry_lab_4/lesson2/.idea/vcs.xml create mode 100644 afanasev_dmitry_lab_4/lesson2/pom.xml create mode 100644 afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/NewTask.java create mode 100644 afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/Worker.java create mode 100644 afanasev_dmitry_lab_4/lesson3/.gitignore create mode 100644 afanasev_dmitry_lab_4/lesson3/.idea/.gitignore create mode 100644 afanasev_dmitry_lab_4/lesson3/.idea/encodings.xml create mode 100644 afanasev_dmitry_lab_4/lesson3/.idea/misc.xml create mode 100644 afanasev_dmitry_lab_4/lesson3/.idea/uiDesigner.xml create mode 100644 afanasev_dmitry_lab_4/lesson3/.idea/vcs.xml create mode 100644 afanasev_dmitry_lab_4/lesson3/pom.xml create mode 100644 afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/EmitLog.java create mode 100644 afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/ReceiveLogs.java create mode 100644 afanasev_dmitry_lab_4/task/.gitignore create mode 100644 afanasev_dmitry_lab_4/task/.idea/.gitignore create mode 100644 afanasev_dmitry_lab_4/task/.idea/encodings.xml create mode 100644 afanasev_dmitry_lab_4/task/.idea/misc.xml create mode 100644 afanasev_dmitry_lab_4/task/.idea/uiDesigner.xml create mode 100644 afanasev_dmitry_lab_4/task/.idea/vcs.xml create mode 100644 afanasev_dmitry_lab_4/task/pom.xml create mode 100644 afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer1.java create mode 100644 afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer2.java create mode 100644 afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderPublisher.java diff --git a/afanasev_dmitry_lab_4/README.md b/afanasev_dmitry_lab_4/README.md new file mode 100644 index 0000000..58a3ac2 --- /dev/null +++ b/afanasev_dmitry_lab_4/README.md @@ -0,0 +1,16 @@ +# Лабораторная работа 4 + +## Описание +Данная лабораторная работа предназначена для изучения проектирования приложений при помощи брокера сообщений. + +### Уроки из RabbitMQ Tutorials +1. ![img.png](images/img1.png) +2. ![img.png](images/img2.png) +3. ![img.png](images/img3.png) + +### Задание +Ссылка на демонстрацию работы программы: https://vk.com/video215756667_456239454?list=ln-IJETwWy23zLuysjetJ + +## Выводы +1. Запуск 1 и 2 Consumer'а: Consumer-2 (без задержки) график Queued Messages держится на нуле, в то время как у Consumer-1 график возрастает (скорость обработки сообщений < 1 с). +2. Запуск 2 первых Consumer'ов: обрабатывают сообщения последовательно и накапливают очередь. diff --git a/afanasev_dmitry_lab_4/images/img1.png b/afanasev_dmitry_lab_4/images/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..31321e3987ec71d4f222f21e7887cd5416a4639d GIT binary patch literal 25405 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 CQeGth literal 0 HcmV?d00001 diff --git a/afanasev_dmitry_lab_4/images/img2.png b/afanasev_dmitry_lab_4/images/img2.png new file mode 100644 index 0000000000000000000000000000000000000000..0f98ad780c0e90e2f9df538ba85a694a8dfedbb9 GIT binary patch literal 23922 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 literal 0 HcmV?d00001 diff --git a/afanasev_dmitry_lab_4/lesson1/.gitignore b/afanasev_dmitry_lab_4/lesson1/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson1/.idea/.gitignore b/afanasev_dmitry_lab_4/lesson1/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/afanasev_dmitry_lab_4/lesson1/.idea/encodings.xml b/afanasev_dmitry_lab_4/lesson1/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson1/.idea/misc.xml b/afanasev_dmitry_lab_4/lesson1/.idea/misc.xml new file mode 100644 index 0000000..9930577 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/.idea/misc.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson1/.idea/uiDesigner.xml b/afanasev_dmitry_lab_4/lesson1/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson1/.idea/vcs.xml b/afanasev_dmitry_lab_4/lesson1/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson1/out/ru/ulstu/Main.class b/afanasev_dmitry_lab_4/lesson1/out/ru/ulstu/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..e9f0a1c0c3c09b302f8a0df2a97822560313cdfa GIT binary patch literal 423 zcmZvZ&q~8U5XQer(x!>2t*xzp3-%zi9?Sz&1QEnT{R5F+JSFW?wrmnf6UE2UgMtSi zz=slN<3WV(VPm0`b%J*(lu8et(oD_z zE}Gb|(elv7CZWB;MX(<sAw26#fngObCNu6ct5{HcBGmXl<=E))pd&ZNf!vg_PQp$q_~-GjZk<}p3 zL-aM;AF|Z7`T$*hrmpUj1OjGY^-q7yoS8lQ@}0fEv-kY<&znC1jNsQe+7QtY)zOX) zhTf-qgBvz?R*k9BQ(;Pmj=Pp)$$JcubY?+AjNy{$Rt%4qN|vlVGfdkOjx=(vlpi zjsj`fMuAte;RzTi%uJ_dl)F^J-_&}x6PIvV!=R2dGW%*gyX8w!q0+j6szW`5pe z14)$-ypoM!h`~q}udE~&xh1JM$tSLttO(!dtHQsQoO6?6(~`-mN1|kI?ooay7soKJ zX)ttLSG7J?tM7it#DJ;_V>=0=;`=&o;satEC8car76uQ<|9xRw8^X(R+b(f)J(~c- zEoJ->!{q~Pa@;Y6y=$V1^RbRQ$TH|9?pr2t%MU6PwHlWDP^!I)BUI^~z?oK_Yxrb; zMQZeq<5PU5VMNC$ats4u^l1RtqCBn&IqH__DVoj{M`IWx8qUv+58saCE*_|(J;87? zT^wzVpIJyy2l!ma7s!)Ng|7=rhRNlkCD&A1BzL5*QX691Dq@Jw%#Y2FJ)RsX5Q;>Y zM)!`}1#SnF^Jva3)6$c-95ESGO2V7tB}IW~g&!H8Y(&*xYQ7v4b*Zr+;w5(YrCdU{7JnZGjvt@%F(s*1hp|NUb<sQ5 zNqw}`>D?Go48Q&VX=seJy)3Q|S8C!dAa}P!z3Cy1A}?oi-xsv8%>$-bv*&C0mf=)b zvrszJ6l#+}!w(GUgS6hA9z^2ZNuuE;P5&0iVXV>cGr>JvmAZYMVz@w*Z=)%|Xf0rp z)+u^x!vLc6On)YHpC-v!S{beFSGK`^uNlnHU3~^(=)@z;l9^I{Nz!&&C*DF^+D2!7 zC=q`JedrZ>3s+y`IK$*{VjvQUu-7=(fyFiIBmWx464R@b4w=Z)3bbcnRx6fG{_)9jU4I5vmh}>15L-$-g2eZCJtA uv<}d_Mb~3|Lzj9oQKqX(*jBMY8mCG299#H~cKba&{n*io7x)Rkp#NW^s?MVT literal 0 HcmV?d00001 diff --git a/afanasev_dmitry_lab_4/lesson1/out/ru/ulstu/Send.class b/afanasev_dmitry_lab_4/lesson1/out/ru/ulstu/Send.class new file mode 100644 index 0000000000000000000000000000000000000000..b6138b1a287d325b5199f5f9cd2a78e79b63851d GIT binary patch literal 2225 zcmaJ?Nmm<35dIo1EyT!R0k#z|27--bz{=_*$Z>*LA}3;tSYn9dv_>5?Fq#oFJ+?XI zl2hKxIez&EIXegZaNdh=9P*ERiBlu7OK_N}?&`1h>gs?0d-V^138*Mq5a0-E2qDbS zu_>O2v?;8O^n7ts>WU$J&#(-2pCOP;t#CvbZt8X=?TBL0P?hbpZW_{3=}FtN2yfWd zjL?_ov4h@g$3)wFeCmTi};al|xSLOTO@rOFYHp*xvBHd|1RVQpkmD?awJhB!JI zVwQY*Y=B`fnaW@6M5YbhxWaK&!!;xr`Ywi(3Eh!G$;q;yI825c=b5MjG8{c5CC>R+`TvosLFFax4U;Wo#JhEa^2s(rl( z43Q0~vO7w;48de-J?n>+*6<$QCxu1f8v24)G!3`RP-x$#Lrp>Xd(ou$V zGwa#ZN-I9ZM;sq(xQkCtJGkR2S)rb^J->nKh73EsK+U7bdnqcJICc1E8pe@fxLOfg zk~&BiYSmC>TDeMCisHJ}#P3w2<57H$`y5|r_|k9Q&RWBsHb^a9_05}>pQfyaN&iNL zbklYv$Mm64?Q$)Z9s8*$nlg$he5E0W2h>fXR4RDYsv})jmKd&`bnQrju7=;+S%&E1 z^7Qibm7;W(d?)CjA`FY+N^-qXO=^V{ z6_n7osPAfcjwOnw36y-Aex}Q+KL%Wm)l)Gaoe-*EdyXz=4BvLEe|PTq38fNeZCkm@ z5!G3#%67?(;Cr&(zy9n|KfzT0FdJ?UxsQ3)AbInSNvcg zG5m2dp$EXaot&^rrgVq$w!P(5GmS|&!8s+kv{RK$;3soaAEb0)8=RaJrdcqQqz2U< z(AaS%O+lrn%u!mJPORhm&9Olp(rm8y80x#)6yVroNS=o}J1M9ZM^l4?uGjgJXRa&t z)EN#(m0pU5kej8O!=Z35hSED!uMGz94!v0bBl->UL}zK&f?oP4Y=r4QN1W?KX~-dT z`z6?mn!r5${bSJ6(uxHvk_bWBDsjWaef~H2!bua?+pY3 zY!7{5tj34NgJbbq@m`h)?jpH|J0bjq4-&yw_!QX1y|H}^kL_WC;ZO7tb|2k`TWvg) z2qr?im`Ma*kM3iL41De5dgf@?b+~IIDPQ@_*y|SvQm8pB)2LX7K#6E4s`#1cFZdO| z5p97V+g-%y--ZbMH#SD7OC;HWVO+)ty`&l9hTwS&kTwB&1m*eS94DStzWUM9ssqALjCJ6gBkA=ZdSi1&!T eb?CGkBuoiEp-e?FXtfn?g-Lsh_BOWRBJn@S2}QyH literal 0 HcmV?d00001 diff --git a/afanasev_dmitry_lab_4/lesson1/pom.xml b/afanasev_dmitry_lab_4/lesson1/pom.xml new file mode 100644 index 0000000..137f696 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + ru.ulstu + lesson1 + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + + com.rabbitmq + amqp-client + 5.22.0 + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Recv.java b/afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Recv.java new file mode 100644 index 0000000..d86b3f2 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Recv.java @@ -0,0 +1,29 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DeliverCallback; + +public class Recv { + private final static String QUEUE_NAME = "hello"; + + public static void main(String[] argv) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + factory.setPort(5672); + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + channel.queueDeclare(QUEUE_NAME, false, false, false, null); + System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); + + DeliverCallback deliverCallback = (consumerTag, delivery) -> { + String message = new String(delivery.getBody(), "UTF-8"); + System.out.println(" [x] Received '" + message + "'"); + }; + channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { + }); + } +} + diff --git a/afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Send.java b/afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Send.java new file mode 100644 index 0000000..50aade8 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson1/src/main/java/ru/ulstu/Send.java @@ -0,0 +1,24 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; + +public class Send { + private final static String QUEUE_NAME = "hello"; + + public static void main(String[] argv) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + factory.setPort(5672); + try (Connection connection = factory.newConnection(); + Channel channel = connection.createChannel()) { + + channel.queueDeclare(QUEUE_NAME, false, false, false, null); + String message = "Hello World!"; + channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); + System.out.println(" [x] Sent '" + message + "'"); + } + } +} + diff --git a/afanasev_dmitry_lab_4/lesson2/.gitignore b/afanasev_dmitry_lab_4/lesson2/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson2/.idea/.gitignore b/afanasev_dmitry_lab_4/lesson2/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/afanasev_dmitry_lab_4/lesson2/.idea/encodings.xml b/afanasev_dmitry_lab_4/lesson2/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson2/.idea/misc.xml b/afanasev_dmitry_lab_4/lesson2/.idea/misc.xml new file mode 100644 index 0000000..9930577 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/.idea/misc.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson2/.idea/vcs.xml b/afanasev_dmitry_lab_4/lesson2/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson2/pom.xml b/afanasev_dmitry_lab_4/lesson2/pom.xml new file mode 100644 index 0000000..077b2f1 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + ru.ulstu + lesson2 + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + + com.rabbitmq + amqp-client + 5.22.0 + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/NewTask.java b/afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/NewTask.java new file mode 100644 index 0000000..2eac498 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/NewTask.java @@ -0,0 +1,29 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.MessageProperties; + +public class NewTask { + private static final String TASK_QUEUE_NAME = "task_queue"; + + public static void main(String[] argv) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + factory.setPort(5672); + try (Connection connection = factory.newConnection(); + Channel channel = connection.createChannel()) { + + channel.queueDeclare(TASK_QUEUE_NAME, true, false, false, null); + + String message = String.join(" ", argv); + + + channel.basicPublish("", TASK_QUEUE_NAME, + MessageProperties.PERSISTENT_TEXT_PLAIN, + message.getBytes("UTF-8")); + System.out.println(" [x] Sent '" + message + "'"); + } + } +} \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/Worker.java b/afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/Worker.java new file mode 100644 index 0000000..67c09c3 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson2/src/main/java/ru/ulstu/Worker.java @@ -0,0 +1,48 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DeliverCallback; + +public class Worker { + private static final String TASK_QUEUE_NAME = "task_queue"; + + public static void main(String[] argv) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + factory.setPort(5672); + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + channel.queueDeclare(TASK_QUEUE_NAME, true, false, false, null); + System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); + + int prefetchCount = 1; + channel.basicQos(prefetchCount); + + DeliverCallback deliverCallback = (consumerTag, delivery) -> { + String message = new String(delivery.getBody(), "UTF-8"); + System.out.println(" [x] Received '" + message + "'"); + try { + doWork(message); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } finally { + System.out.println(" [x] Done"); + channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); + } + }; + + boolean autoAck = false; + channel.basicConsume(TASK_QUEUE_NAME, autoAck, deliverCallback, consumerTag -> { + }); + } + + private static void doWork(String task) throws InterruptedException { + for (char ch : task.toCharArray()) { + if (ch == '.') Thread.sleep(1000); + } + } +} + diff --git a/afanasev_dmitry_lab_4/lesson3/.gitignore b/afanasev_dmitry_lab_4/lesson3/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson3/.idea/.gitignore b/afanasev_dmitry_lab_4/lesson3/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/afanasev_dmitry_lab_4/lesson3/.idea/encodings.xml b/afanasev_dmitry_lab_4/lesson3/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson3/.idea/misc.xml b/afanasev_dmitry_lab_4/lesson3/.idea/misc.xml new file mode 100644 index 0000000..9930577 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/.idea/misc.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson3/.idea/uiDesigner.xml b/afanasev_dmitry_lab_4/lesson3/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson3/.idea/vcs.xml b/afanasev_dmitry_lab_4/lesson3/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson3/pom.xml b/afanasev_dmitry_lab_4/lesson3/pom.xml new file mode 100644 index 0000000..e7d92b8 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + ru.ulstu + lesson3 + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + + com.rabbitmq + amqp-client + 5.22.0 + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/EmitLog.java b/afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/EmitLog.java new file mode 100644 index 0000000..f1ffc25 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/EmitLog.java @@ -0,0 +1,25 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; + +public class EmitLog { + private static final String EXCHANGE_NAME = "logs"; + + public static void main(String[] argv) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + factory.setPort(5672); + try (Connection connection = factory.newConnection(); + Channel channel = connection.createChannel()) { + + channel.exchangeDeclare(EXCHANGE_NAME, "fanout"); + + String message = argv.length < 1 ? "info: Hello World!" : String.join(" ", argv); + + channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes("UTF-8")); + System.out.println(" [x] Sent '" + message + "'"); + } + } +} diff --git a/afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/ReceiveLogs.java b/afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/ReceiveLogs.java new file mode 100644 index 0000000..60760a8 --- /dev/null +++ b/afanasev_dmitry_lab_4/lesson3/src/main/java/ru/ulstu/ReceiveLogs.java @@ -0,0 +1,33 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DeliverCallback; + +public class ReceiveLogs { + private static final String EXCHANGE_NAME = "logs"; + + public static void main(String[] argv) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + factory.setPort(5672); + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + channel.exchangeDeclare(EXCHANGE_NAME, "fanout"); + + String queueName = channel.queueDeclare().getQueue(); + channel.queueBind(queueName, EXCHANGE_NAME, ""); + + System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); + + DeliverCallback deliverCallback = (consumerTag, delivery) -> { + String message = new String(delivery.getBody(), "UTF-8"); + System.out.println(" [x] Received '" + message + "'"); + }; + channel.basicConsume(queueName, true, deliverCallback, consumerTag -> { + }); + } +} + diff --git a/afanasev_dmitry_lab_4/task/.gitignore b/afanasev_dmitry_lab_4/task/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/afanasev_dmitry_lab_4/task/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/task/.idea/.gitignore b/afanasev_dmitry_lab_4/task/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/afanasev_dmitry_lab_4/task/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/afanasev_dmitry_lab_4/task/.idea/encodings.xml b/afanasev_dmitry_lab_4/task/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/afanasev_dmitry_lab_4/task/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/task/.idea/misc.xml b/afanasev_dmitry_lab_4/task/.idea/misc.xml new file mode 100644 index 0000000..9930577 --- /dev/null +++ b/afanasev_dmitry_lab_4/task/.idea/misc.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/task/.idea/uiDesigner.xml b/afanasev_dmitry_lab_4/task/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/afanasev_dmitry_lab_4/task/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/task/.idea/vcs.xml b/afanasev_dmitry_lab_4/task/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/afanasev_dmitry_lab_4/task/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/task/pom.xml b/afanasev_dmitry_lab_4/task/pom.xml new file mode 100644 index 0000000..ad5b467 --- /dev/null +++ b/afanasev_dmitry_lab_4/task/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + ru.ulstu + task + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + + com.rabbitmq + amqp-client + 5.22.0 + + + + \ No newline at end of file diff --git a/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer1.java b/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer1.java new file mode 100644 index 0000000..8bd74cb --- /dev/null +++ b/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer1.java @@ -0,0 +1,38 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DeliverCallback; + +public class OrderConsumer1 { + private static final String EXCHANGE_NAME = "orders"; + private static final String QUEUE_NAME = "consumer1_queue"; + + public static void main(String[] args) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + channel.exchangeDeclare(EXCHANGE_NAME, "fanout"); + channel.queueDeclare(QUEUE_NAME, false, false, false, null); + channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ""); + + System.out.println(" [*] Consumer 1 ожидает сообщений."); + + DeliverCallback deliverCallback = (consumerTag, delivery) -> { + String message = new String(delivery.getBody(), "UTF-8"); + channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); + System.out.println(" [x] Consumer 1 получил сообщение, обработает через 3 с.: " + message); + + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }; + channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag -> { + }); + } +} diff --git a/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer2.java b/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer2.java new file mode 100644 index 0000000..b642111 --- /dev/null +++ b/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderConsumer2.java @@ -0,0 +1,34 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DeliverCallback; + +public class OrderConsumer2 { + private static final String EXCHANGE_NAME = "orders"; + private static final String QUEUE_NAME = "consumer2_queue"; + + public static void main(String[] args) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + // Создаём exchange и очередь + channel.exchangeDeclare(EXCHANGE_NAME, "fanout"); + channel.queueDeclare(QUEUE_NAME, false, false, false, null); + channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ""); + + System.out.println(" [*] Consumer 2 ожидает сообщений."); + + DeliverCallback deliverCallback = (consumerTag, delivery) -> { + String message = new String(delivery.getBody(), "UTF-8"); + channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); + System.out.println(" [x] Consumer 2 моментально обработал сообщение: " + message); + }; + channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag -> { + }); + } +} + diff --git a/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderPublisher.java b/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderPublisher.java new file mode 100644 index 0000000..dda3c1d --- /dev/null +++ b/afanasev_dmitry_lab_4/task/src/main/java/ru/ulstu/OrderPublisher.java @@ -0,0 +1,26 @@ +package ru.ulstu; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; + +public class OrderPublisher { + private static final String EXCHANGE_NAME = "orders"; + + public static void main(String[] args) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("localhost"); + try (Connection connection = factory.newConnection(); + Channel channel = connection.createChannel()) { + + channel.exchangeDeclare(EXCHANGE_NAME, "fanout"); + + while (true) { + String message = "Новый заказ #" + System.currentTimeMillis(); + channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes("UTF-8")); + System.out.println(" [x] Отправлено сообщение: " + message); + Thread.sleep(1000); + } + } + } +} -- 2.25.1