JMS Queue: Множество нишки за четене


Имам програма на Java, която поставя в опашката от другата страна на опашката, имам 10-15 потребители; всяко ЕДНО от които трябва да прочете съобщението и да го обработи. Ако някой от 10-15 потребители се освободи, той взима следващото съобщение от опашката.



По принцип потребителят може да вземе съобщението от опашката, когато е свободно, и само един потребител трябва да го вземе. (без никакви блокове за синхронизация или така).
Също така от страна на подателя мога ли да поставя на пауза изпращането на съобщенията в опашката, ако размерите на опашката станат пълни (или достигнат определен праг)?


Наистина съм нов в JMS API. Извинения, ако това е въпрос за начинаещи.


Благодаря!!


person Shalabh    schedule 27.02.2014    source източник
comment
какъв е въпросът ти? да, можете да спрете да изпращате съобщения в опашката, ако желаете.   -  person eis    schedule 28.02.2014
comment
@eis Мислех, че въпросът ми е ясен. Ако не е.. Трябва да изпращам съобщения в опашка и имам 20 нишки, работещи като потребители, които могат да вземат данните от опашката (след като са свободни). така че когато всяка нишка се освободи, тя отива на опашката, проверява дали данните са там, взима и т.н.. възможно ли е това? Благодаря за помощта.   -  person Shalabh    schedule 28.02.2014
comment
добре, оставихте тази изпълнима част, така че не беше ясно това е въпросът.   -  person eis    schedule 28.02.2014


Отговори (1)


Трябва да изпращам съобщения в опашка и имам 20 нишки, работещи като потребители, които могат да вземат данните от опашката (след като са свободни). така че когато всяка нишка се освободи, тя отива на опашката, проверява дали данните са там, взима и т.н.. възможно ли е това?

Да, изпълнимо е - това е стандартният процес за правене с JMS опашки. Друга алтернатива биха били темите, но с темите всеки слушател ще трябва да обработи едно и също съобщение, а не само едно, така че опашките са това, което искате. Въпреки че обикновено нямате нишки като потребители (дори не съм сигурен какво означава това), а бобове, управлявани от съобщения. Може да обмислите използването им. MDB така или иначе работят в собствена нишка.

person eis    schedule 28.02.2014
comment
Благодаря за търпението и отговора на това :) . Все още не мога да получа това. Вижте, трябва да имам 10 потребители, които слушат една и съща опашка/тема, и САМО един трябва да вземе съобщението (винаги, когато потребителят е свободен или търси опашката за съобщението). Можете ли да ми предоставите някакви връзки? където мога да прочета за това и да ти спестя време. - Благодаря отново! - person Shalabh; 28.02.2014
comment
@user1613403 Мисля, че вече отговорих на това. Това е стандартният процес за правене с JMS опашки. Темите не поддържат това. - person eis; 28.02.2014
comment
Добре, прочетох за това и мисля, че това е начинът, по който може да се направи. Въпреки това, няма начин да контролирате броя на съобщенията, които остават на опашката. Опашката не може да бъде оразмерена според броя на съобщенията - person Shalabh; 01.03.2014
comment
@user1613403 със сигурност има, вижте този пример за конфигурация на weblogic и това за OpenMQ. също така за всички реализации можете да проверите количеството съобщения в опашката по всяко време и да действате съответно - person eis; 01.03.2014
comment
Лошо, използвам ActiveMQ, но не съм сигурен как да се справя там.. има ли някакъв начин..да уведомя потребителите си да ги изключат? или съобщението вече няма да бъде поставено на опашка? като входните данни са завършени или така? - person Shalabh; 01.03.2014
comment
защо потребителите ще затварят? - person eis; 01.03.2014
comment
Мисля, че трябва да изпробвате някоя книга за основите на JMS. Това и това може да ви помогне да започнете. - person eis; 01.03.2014