From 10ca7e4f0da62334af82dbca3b096a4bff56fae3 Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 23 Nov 2021 11:11:30 +0100 Subject: [PATCH] project pushed --- src/main/java/com/release11/Main.java | 18 ++++++++---------- .../com/release11/Processors/CSVProcess.java | 5 +++++ .../Processors/ValidatorProcess.java | 7 +++++++ target/classes/com/release11/Main$1.class | Bin 4405 -> 4874 bytes target/classes/com/release11/Main.class | Bin 2274 -> 2340 bytes .../com/release11/Processors/CSVProcess.class | Bin 2490 -> 2712 bytes .../Processors/ValidatorProcess.class | Bin 2369 -> 2369 bytes .../com/release11/Processors/XMLProcess.class | Bin 1054 -> 1054 bytes 8 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/release11/Main.java b/src/main/java/com/release11/Main.java index eeb9633..022ec9c 100644 --- a/src/main/java/com/release11/Main.java +++ b/src/main/java/com/release11/Main.java @@ -43,20 +43,21 @@ public class Main { xmlDataFormat.setContextPath("generated"); JacksonDataFormat jacksonDataFormat = new JacksonDataFormat(ObjectFactory.class); jacksonDataFormat.setPrettyPrint(true); - errorHandler(deadLetterChannel("activemq:queue:dead")); + errorHandler(deadLetterChannel("activemq:queue:dead?transferExchange=true").maximumRedeliveries(3).redeliveryDelay(5000)); from("direct:start") .setBody(constant("SELECT * FROM material")) .to("jdbc:source") .split(body()) .to("activemq:queue:RawMaterial"); + //?acknowledgementModeName=CLIENT_ACKNOWLEDGE from("direct:getPackages") .setHeader("material_id", simple("${body[id]}")) .setBody(simple("SELECT * FROM package WHERE material_id = :?material_id")) .to("jdbc:source?useHeadersAsParameters=true"); - from("activemq:queue:RawMaterial") + from("activemq:queue:RawMaterial?acknowledgementModeName=CLIENT_ACKNOWLEDGE") .enrich("direct:getPackages", new MergeAggregator()) .process(new ValidatorProcess()) .choice() @@ -65,9 +66,7 @@ public class Main { .otherwise().marshal(xmlDataFormat).to("activemq:topic:Material") .to("log:?level=INFO&showBody=true"); - - - from("activemq:topic:Material?clientId=1&durableSubscriptionName=FilteredType") + from("activemq:topic:Material?clientId=4&subscriptionDurable=true&subscriptionName=NAZWA") .filter().xpath("//material_type='A1' or //material_type='A2' or //material_type='A3'") .to("activemq:queue:FilteredType"); @@ -77,14 +76,11 @@ public class Main { .marshal(jacksonDataFormat) .to("http:10.101.111.19:1080/api/json/material"); - - - - from("activemq:topic:Material?clientId=2&durableSubscriptionName=FilteredIsDeleted&acknowledgementModeName=CLIENT_ACKNOWLEDGE") + from("activemq:topic:Material?clientId=5&subscriptionDurable=true&subscriptionName=NAZWA_DELETED") .filter().xpath("//is_deleted='false'") .to("activemq:queue:FilteredIsDeleted"); - from("activemq:queue:FilteredIsDeleted") + from("activemq:queue:FilteredIsDeleted?acknowledgementModeName=CLIENT_ACKNOWLEDGE") .unmarshal(xmlDataFormat) .process(new CSVProcess()) .to("sftp:test@10.101.111.19:2222/upload/test?password=admin"); @@ -97,6 +93,8 @@ public class Main { context.start(); ProducerTemplate template = context.createProducerTemplate(); template.sendBody("direct:start", null); + + Thread.sleep(50000); context.stop(); } } \ No newline at end of file diff --git a/src/main/java/com/release11/Processors/CSVProcess.java b/src/main/java/com/release11/Processors/CSVProcess.java index 53f8ccc..8c73e10 100644 --- a/src/main/java/com/release11/Processors/CSVProcess.java +++ b/src/main/java/com/release11/Processors/CSVProcess.java @@ -5,6 +5,8 @@ import generated.Package; import org.apache.camel.Exchange; import org.apache.camel.Processor; +import java.util.ArrayList; + public class CSVProcess implements Processor { @Override @@ -29,6 +31,9 @@ public class CSVProcess implements Processor { result+=pack; } + ArrayList tmp = new ArrayList<>(); + tmp.get(0); + exchange.getIn().setBody(result); } } diff --git a/src/main/java/com/release11/Processors/ValidatorProcess.java b/src/main/java/com/release11/Processors/ValidatorProcess.java index 2b510c6..167e55d 100644 --- a/src/main/java/com/release11/Processors/ValidatorProcess.java +++ b/src/main/java/com/release11/Processors/ValidatorProcess.java @@ -5,12 +5,19 @@ import generated.Package; import org.apache.camel.Exchange; import org.apache.camel.Processor; +import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ValidatorProcess implements Processor { @Override public void process(Exchange exchange) throws Exception { + + //ArrayList tmp = new ArrayList<>(); + //System.out.println(tmp.get(0)); + + + MaterialType material = exchange.getIn().getBody(MaterialType.class); Pattern pattern = Pattern.compile("\\d\\dx\\d\\dx\\d\\d"); for (Package p: material.getPackages()) { diff --git a/target/classes/com/release11/Main$1.class b/target/classes/com/release11/Main$1.class index 97c0b7911bb08a8856759077825f1da66886252c..77546dc03d384f55d87d318cae07a016106f013e 100644 GIT binary patch delta 2166 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 IGlFvd2UR-3i2wiq delta 977 zcmYLIOHWfl6#l07>17bOpilu7MFmP}FN$JCP_YUMC_brAuH}kF+QPk8d?sCJOxQ_g z>DIk5MzA(<>B6mh7yb!d8P5pDNoLNR`OfQ`GxNs&Q8)1Q_ovSQ4&kYV2owVIK|MAE#?!x zH}AQD=QxRRH&re zIiI?e+Az3+s|KbxGPuUjCMF|o;+NjnAU$tz+?27@AS^BzxGe_N#+5J2@26N7Yg}Te z|KIuaqpY_O=86UJJhHDuNk$6=&mW$r_ILr^{w;blazsF-L8o<^v;;{;QtMg+d-oT1 zX_YWghdZ?LbpvEEL)s>IxJyB%0X77c9s{safst9mrZL+Zk9Dtt$4YkXD(slOWfhGT zY$LE`B5t?ZMr;*3D%hQguVGJ0{fLeV;u$-!1}CLOHEF+pT^x+6_Mxcu5r@kdQV>-u zNK=^8WsF2fD`SlP73UaIdQ`VBvNA49yE3jbRR59=`_Z$fJM5;5^VSg=)ywsSIP4M YSw5tF1ds4|<1CFQn`vtioF+-*4{9*2I{*Lx diff --git a/target/classes/com/release11/Processors/CSVProcess.class b/target/classes/com/release11/Processors/CSVProcess.class index 1630e32efd6fea0c7b6c3240a47696c0c2f7d51f..ff24ec37f3dc44f5d30749d9f69cbec26f83959b 100644 GIT binary patch literal 2712 zcma)8TXPgu5dKasJ8?7QvV@RuRRKu?VZ|GmMTCUg%5I1Tf`GTl=CC_tc4nQKMIwsg z{eHgye?VV-36)r7`QVd}zFNhrRX+FwpbGuY?CkDrC87`8r%(6kK7G2s?%7{&Fa88z z7p}!|5B9ZVKSni-wc`K|w&745%{ZLkfuoAcC@!nGam5`|+=L=eCLk(`$#xvaiFTwg zrN~JQPsgzmhZQ-c$Z18+DDsRV&niOmCS)}{AICcEQ{)8|fT3YpLr%ktKx~g`oBm#b z=7GT}ftE36MhbLhOk0kZi__9QZcJO0Br;CUu%-;xRQpia;ulO$U`raw^=V1hi5`A+TW}G8Reau;)@SGIiS#xL^DRh3}MzG)@*yRI>pF+HEhdK*(i+b}&t%Ngv6JSlDaGB4fK zUV2$E>GK^~qZAlxkQ&Yk#F-UY@=eF~G~~ITbjof{9x_!;I_ufpq4K0-6E9TtiL&|$+7=o)n#-}7Cgl$CzLnejSfD7E259WFc_KFW$auj3_LP~4o3 zmzC@y%58W>$E&!c;WZtvNnRERfoZ+7|{Q^19H*BBXyEW=MY_fFJd9CqSP``?# z%5V_q;p6HVuN~dJjMJs(mNo5++@cy$O^d;QY0|J!N0+;;j=pNl>U3c7pZAV)A_;Ub zk^|Dqxn|ITK`NQ!c8WtlGku9_0s`QMBcY>?ASL0zF>65TZ7`?;jDEF(;f>1+YTgVC zp5`pJgH2#ZU*%KV|$IfOsqRTGdrc-plEK1wsY!PS@ zg4a^UF*ndq{n~|^R|Vs$Xu3oF;FN|h)NuGlU~?T1rhVR-mEr8J!0(WeV?)hpxWWiC zjx$^4Y}L~?$9Vv3$)sM1-Vpkz%%&rTJ!464bHy;V6jKpNgJDqkh%$ugnTV+Rl!z#F zF=klSBukjmaFxxt={9RC;G&7Z)%{N^`t<@6@q!d;Rp=QCP|u0#9~sP7|< z1;RMClGiH-Fn~es1ctDUPG~G{aMdWgwQYfQMWT5DElv0t&Dlij`0)05#1@r4VA~dP zSIEW}(H^pTUAkfs9hB0la{*lfBQ5i2zp*Q(wb-;iS@_&Tj$Xec(3kO z1+J>Q-Ui+323=pnuD@ZoCWvArHr&tH*D{{({=WDl)}6YJ^(vs|d2BdYdF}85Ha0<} ztOY7%r_oE=fo^o72VK}mZU_lH%)dwbC^<^Kh1Dpb50}u-&&?WK;}zfY&(b{B;}>ke zZ?yWIwYtGd{lO~z#WdffcU6WXOl1kP*p6YA$AW_$tX?ZMx5CmW?tbiKiMsJ89>9Yv zPY?Y(M2lvwJ&ffMM!SnPs;CvoZb}}dq#I4Q!QN`tFrp!KlONAL6u0o;V>I7Oz6p=x cYp!w1zQniqiqAO0eGm0%%AN@5QvrSMAK#q8&;S4c literal 2490 zcma)8U2_vv7=BJavNhe(HvOOh1e78zP-0aC8w6}AHj)&ir6~BdO%BP@&2HS?Ac&&) zh2P$)e?Z4OZ*bZR#|y8#^u`&T@dxNX@B)3#X47mYg>f=-_MG?oea`#7C%@cT`w_q) zd=W<*+BJ0O=tNAQ@3L{lNLhwmOr2i7Ec3oV?1*Wb{!xMUvGJvDbm2Y?aUI>z1(J?i zOc@m;Uy`Z3QI=L}_G-RFZ7I-Mlzzq**futvZ4t{!&ohcLtznbEa8cUQHGEk}<+!@0 zVJ%*($ZqtZUqeF200sp{?q)|R0R74rZ;wcx z75|`)$8kuYoBT6IeucHeJ4n>AtNNyu%9@^^?#2_C(va411W(dl0PQ+kpvz=|8NNg0 zhnuuBA)OYE;kbsUbWCH0J{lJ4A}qL);mymd><%`?1*I{o<0PII=&%EF^R0$ury zK)u+*MBXbiWmZj|xX~mdKa2SlLwtG>>OL&=idiBN{iq=4w&-juC zLtt0lDW_a%(Sw|vOr3F^JiFU*z0}OYQh3sk7ueF$!RxXFZpJCFEPJ!2Eo)gX8p{?b ziL8@1tR;hEf#;Ce;g?Jn!0zn-@SSEJm0D1$>|2LXeP*S{mly}9*^2Vo(v$+CA}|o? zn(zYYpi8dLy{-3fK*4f2;W*GDmg-X>=sjMgE4`}4^6FXe8BWfq1bJ(?(lnxL(?TH5 z3}nzSo(4|Afky1>97-)XRW~nBnhMq4#@!rH(zHA6IKJn*MkOcxl2h<{W4IB=TXkSqp4@4*vJpvO?_d!Uw^Iln({kgkU>lY&K@_W=O*L39G9m z+l`XY@EObM-lDwGTE=__USX37EOWl9FJE1*1)fs;@>N3T-X9>o57?5cVuP>lC9Zl+ z07aB|5-@R@MyM>l<5wf??|rM#SiL=~=xxJK=*cC9<|p>w#^yC_1%mC4HS7wv53ONu zxSeQFA6~PU91g8u-%!cDb1A!vDSsxvV(6-&mFowxB!V7-1i6_~1@ z=9_rWHt`mlPUo9W7lJ6JViU>O8ZI)PZ~nbr%Wh&7FSJ2H)D8vFSqyU3(a(os5Sy?A zy-ceQ2T3`O1Wu7^VF(or;|4b4Q;gtizWd)|3vLsZpRooRd8osv3^{gIjow o4-3tKApigX diff --git a/target/classes/com/release11/Processors/ValidatorProcess.class b/target/classes/com/release11/Processors/ValidatorProcess.class index d680e85d276f489dfc54c91f4ae88bd17185ec28..ae415a2dd95f7765183802fcd5c94cb5832b48f4 100644 GIT binary patch delta 1227 zcmYjRTT@$A6#n)(C)wd-8$&3Uq)EAy0wJYPluIK)kfO!5V7*X9tb`$Y7wc2U7ksGB_!7Yfr#$%Lj1T?*9e;ywIwSQv#9^E>XYIB2`qtX(`_7(o5I6`_ zem?x+M*t)E%til1W$@OF@mCbAj1h44djb>eN-49AENhBqf1?=f^DpM@wZWcBrQu+_G(9A%hixCVk*)8j@I5$bwkkVtO%MJ~j$#cuOIVb%}z)O%xU0#)iTs zN_xULF{iMFTMB3JjzSrntuCEg&lEN}g~YbPyLeCGeSDyB+rbTCSfZlvA?_%AgpVce zI+#xsKE)k@s6Mo!4FdkPfelzZgV&7T$(fm zT6T&pJHHI-xQOf9;DSgA}(q99pG09@9XC^wOQ&wL^z>_PK=9BrY4BGh#Ll8L0J7RLBptPqL z^>YiL2Dlz`yS>TkDMOD8+Y{uT~(+m9*et!?kap=A`lBaZtlUqk9rfk zXzz6pfhrn~QYZeGa_>I+#+leWns|_N0*$Cg6Po!{M$v*P^1e*w*U5Z=oL4yZ2H{&I zQzo4@mW-3^6mR|+bkQ3{0^R6=i<#~JC_7#hy`)~xD;L9A(r?Bx`f!ei_Y)a`b%+iL zQ({2k{683x6?i2E|3c_*qMsnfV*Qg`d7tj*l*|kb~c>|--E|*hw1F0xr&zYSgcxcy44!g zHixZ9Bm26n2j&AFT2n0!AN?+l*iEm8`b8;3jDLe}j(H9fq<4|g3(>&rE?r zwXxC>&th(bvB|i2ELnFE7Z4{?gW#u_HrSvQV@JRh*wlHHrTx0SE-1%YYT)UA0eZ#E AzyJUM delta 1329 zcmZvb&r@4f6vsa|?mI^<*awt9JVYfdD^C#7Vk&%Xk`U$9Mv4N zInD|1v3W`?9dv5CY!Y;P4~>R7opv^--EF}oaOQn~uT7GZ3Nu?W*LHMX{4WWoHT{a} zf6&c1%h#P1*P@SSZB8-ZoeQ3*^;;jZd5&R)UU%}#X*cJkg9B3*BaCXsY@Vn4e=rGI ze(Yh^W*KJ{<*CfNo88RZ$XbkZUNd3y0xx>s1_v$wA0};H=7RS)IMm`dGG#N(fc)2r zo1btbXNJp~D>koi)f+T=y?xbIU≧cYXJ3ysnwId4mP7CDhjLTi&vHn?3-;8KTWfW@C>kUlr&?+4UP-J8h4LM~1MP8R%QcfjjuUB3cotEOI2k&s0uD>h@@u?k><&q;*FzY{twY z?TY(c^0gi%VSU5Fo>;KJGX(~RL$OeS(_axuM9vs{oGbE@!7i;`e#FHBmrAZz|K$qp zK6&VOY?M0gmp-A2YL3t#TQDTrI1w&Tv%?&<%u~-baph!mwrFHqrrw7)CSb?ums!e* zHpD2KX;rvI%paHch1_s_FQXK~0}#bEFOKd~ zb$DMKy=SQ1C%?wyVQVdHrBkEv`;>*PxF~x#1+I-H4vHP*@9mU~17=g5)D4;sj0f`Q z0c*p;7_!v?T10E5PWJjZ$2ckX0opkuTYH{PCS|KH(=7z{3foB`rtgqEQ^?!lj#LyV phm>tF%SQqQ!}L@9U=@zprlqN;vewizOeH5#xyaumaPA1Xdk-&5I;b z4wvT0aAY}h4BA1n-RvGQsOijwOejArFXL*=FCgIOSQprUW#1bn$EH95MUE|jZR`l_ zqQp@as9;ZE9|!WACBqDXR<&2PuBz=z>%7)#)VoqsVv+Dadwg4Obh^#!HiID_6vM8i zREDVCiQ1nB4mW_>@(Qos60(x8<9E! z6pL{Kf(TK@5XKCNIKwxDDq%V|gu)O~hj1x)hkEt|cYXkE08XU<)$&8=3MLEWml~-! g((&>5M4E&!i#b{mM1)?Hrd)QN6horCPVT&Pl|~#6*dRMhrwu#Us?2dj|%j1|l&t z;1Nuic?Pk6?cl6+_E~$cm7Q}NybW%?{XRVdORRfn9G5mjI{`(cR=uniPpfCg#hruN z(cy(6uy%5Ga6)oqhd-H^I7&0oR+F6tc2SqA5nMz@{FJ_Bl{EuO|yYn zN>VAx%!!FVd@k$==cgLDifFh&m*$1=_C0-t2L>NVi4+m7&|p;43b5}^Y}vO?H^*Dn bV#GWP646bJMfn0vMY`JLWm(Ru+%;=|O8_>;