Glassfish má konfigurační parametr Maximum Number of Unconsumed Messages, kterým lze počet uložených zpráv omezit. Je-li topic plný, odesílatel dostane výjimku.
Z.T. -- Zdenek Tronicek FIT CTU in Prague Vlastimil Elias napsal(a): > BTW tady se skrývá jedno "provozní nebezpečí" které není na první pohled > úplně patrné. Pokud se totiž nějaký klient, který má durable > subscription, přestane k JMS serveru připojovat ale nezruší to > subscription, > tak vám časem přeplní persistentní úložiště JMS serveru. Samozřejmě toto > nebezpečí je hlavně u systémů kde těch zpráv je opravdu hodně nebo jsou > velké. > > Vlastik > > Dne 18.3.2011 11:41, Petr Novak napsal(a): >> Zdravím všechny, >> >> zkouším vytvořit komponentu, která by umožňovala dynamicky propojovat >> různé systémy. Prakticky se mi jedná o realizaci integračního patternu >> "Dynamic Recipient List >> <http://books.google.cz/books?id=dH9zp14-1KYC&pg=PA34&lpg=PA34&dq=Dynamic+Recipient+list+pattern&source=bl&ots=UwUspEa-47&sig=IOOD5ngPz6Wwp5_tm6PvBdkeMDQ&hl=cs&ei=OyeDTdu9KYjvsgbN5NCWAw&sa=X&oi=book_result&ct=result&resnum=3&ved=0CC0Q6AEwAg#v=onepage&q=Dynamic%20Recipient%20list%20pattern&f=false>". >> >> >> >> Principiálně by to mělo fungovat tak, že není dopředu znám seznam >> příjemců, různé systémy se mohou zaregistrovat prostřednictvím >> nějakého API k odběru určitých typů zpráv. V rámci registrace jsem >> chtěl vytvořit dynamicky jejich odběrný kanál (frontu) a ten Dynamic >> Recipient List Router by podle typu zprávy, která mu přijde na vstupu, >> poslal kopii do všech registrovaných kanálů, které mají o tento typ >> zprávy zájem (tedy na základě té registrace). >> >> Chtěl jsem použít řešení založené na Spring Integration + nějaké JMS, >> asi ActiveMQ. Ale narážím na tu dynamičnost řešení - jak vytvořit >> Spring Channel podle nějakého seznamu registrovaných (třeba z >> databáze). Připadá mi, že Spring má všechno staticky - vše >> nakonfigurovat a propojit v XML a pak nastartovat aplikaci. Ano mohl >> bych zkusit zavádět beany (Channel, Router, ...) do Spring Contextu za >> chodu, ale to se mi moc nezdá - nevím, jak pak Spring rozdýchá procesy >> jako injection, postprocesing, AOP a ostatní zpracování >> koleminicializace bean, které probíhá při jeho startování. Nebo >> myslíte, že Springu nebude vadit,když mu za chodu aplikace zadefinuji >> nějaké další beany ? Ani nevím, jestli na to má nějaké API,něco ve >> smyslu ApplicationContext.createBean(bean.class,"beanID",properties); >> >> Ještě jsem zvažoval omrknout Apache Camel, nemám s ním zkušenost. >> Našel jsem, že lze psát pomocí jeho DSL kódy jako >> >> from("jms:xmlOrders").recipientList(header("recipients")); >> >> Ale nejsem si jistý, zda toto lze dělat i za chodu aplikace a nebo to >> je jen jiný zápis statické XML configurace, která se provede při >> startu, navytváří se fronty a pospojují se těmi transformatory a >> routery. To bych pak na tom byl stejně jako s tím Springem. >> >> Co byste použili vy na řešení takové úlohy ? Rád bych se vyhnul >> objevování kola - tedy že bych si na to musel napsat vlastní >> integrační framework. Zároveň si myslím, že jde v principu o >> relativně jednoduchou úlohu a tak řešení typu použít ESB mi připadne >> jako kanón na vrabce. >> >> Google mi zatím moc nepomohl, nebo jen nevím, jak se ho správně zeptat >> :o). >> V této oblasti nemám moc zkušeností, začínám se s tím seznamovat, tak >> budu rád za každý váš tip, radu nebo zkušenost. >> >> Přeji úspěšný den >> >> Petr >> >> > > -- > Vlastimil Elias > Senior Software Engineer > JBoss.org community team > >