Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / сокраняется сообщение JMS после пересоздания Queue / 2 сообщений из 2, страница 1 из 1
03.07.2007, 17:53:06
    #34635947
ИгорьМ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сокраняется сообщение JMS после пересоздания Queue
Помогите!!
создаётся (не важно программно или через консоль) Queue
в Queue отправляется сообщение , всё замечательно работает, пытаюсь предусмотреть случай, когда по какой -то причине получатель не может забрать сообщения из Queue , по логики программы передача всех сообщений должна начинатся или с последнего не принятого, или с самого начала ( в зависимости от установки).

Когда надо принемать сообщения начиная с последнего принятого, всё замечательно, а вот когда надо начинать всё с начала столкнулся с проблемой , алгоритм следующий:
1) Создали Queue F
2) Отправили сообщение
3) Убили Queue F
4) Создали Queue F
а там лежат сообщения , а хотелось бы что бы при удалении Queue сообщения не полученные пропадали
Поставил messageT.setJMSDeliveryMode(0); всё равно остаются, что делать??

отправка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
 public  String message(String message, String clientId) {
			//String queueName = "queue/vaspQueue";
			Context jndiContext =  null ;
			QueueConnectionFactory queueConnectionFactory =  null ;
			QueueConnection queueConnection =  null ;
			QueueSession queueSession =  null ;
			Queue queue =  null ;
			QueueSender queueSender =  null ;
			TextMessage messageT =  null ;

            log.info("Registered a message: '"+ message+"', Client: '"+clientId+"'");
    		 try  {
    			jndiContext =  new  InitialContext();
      			queueConnectionFactory = (QueueConnectionFactory)
    			jndiContext.lookup("QueueConnectionFactory");
    			queue = (Queue) jndiContext.lookup(clientId);
    			queueConnection = queueConnectionFactory.createQueueConnection();
    			queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    			queueSender = queueSession.createSender(queue);
    			messageT = queueSession.createTextMessage();
                messageT.setText(message);
                messageT.setJMSType("news");
                messageT.setJMSDeliveryMode( 0 );
                queueSender.send(messageT);
                //queueSender.send(queueSession.createMessage());
    		}  catch  (Exception e) {
    			log.error("Exception occurred: " +	e.toString());
    		}  finally  {
    			 if  (queueConnection !=  null ) {
    				 try  {
    					queueConnection.close();
    				}  catch  (Exception e) {}
    			}
    		}
             return  message;
        }

получение ( часть кода не имеющая отношение к вопросу удалена)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
 public  String getNewMessages(String clientId) {
        log.debug("getNewMessages");
        Context jndiContext =  null ;
        QueueConnectionFactory queueConnectionFactory =  null ;
        QueueConnection queueConnection =  null ;
        QueueSession queueSession =  null ;

        QueueReceiver queueReceiver =  null ;

        Message m;
        String response;
         int  index;

        response =  new  String();
        response = "<html>\n" +
        "    <head>\n" +
        "        <script language='JavaScript'>\n" +
        "            var messages = new Array();\n";
         log.debug("response 1");
         try  {
            jndiContext =  new  InitialContext();
            queueConnectionFactory = (QueueConnectionFactory)jndiContext.lookup("QueueConnectionFactory");
            queueConnection = queueConnectionFactory.createQueueConnection();
            queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            Queue queue =  null ;
            log.debug("Queue queue = null;");
             try {
                log.debug("try");

                queue = (Queue) jndiContext.lookup(clientId);

                log.debug("queue = (Queue) jndiContext.lookup(clientId);");
            } catch (NameNotFoundException nnfe){
                log.debug("catch");
                queue = queueSession.createQueue(clientId);
                jndiContext.bind(clientId, queue);
                log.debug("queue = queueSession.createQueue(clientId)");
            }
            log.debug("queueBrowswr = queueSession.createBrowser(queue);");
            QueueBrowser  queueBrowswr = queueSession.createBrowser(queue);
            log.debug("queueSession.createReceiver(queue);");
            queueReceiver = queueSession.createReceiver(queue);
            log.debug(" queueConnection.start();");
            queueConnection.start();
            index =  0 ;
            log.debug("for(;;)");
             for (;;){
                 if  (queueBrowswr.getEnumeration().hasMoreElements()) {
                    log.debug("queueBrowswr.getEnumeration().hasMoreElements()");
                    TextMessage message = (TextMessage) queueBrowswr.getEnumeration().nextElement();

                     if (message.getJMSType().equals("news")){
                        log.debug("message.getJMSType().equals(news)");
                        message = (TextMessage) queueReceiver.receive( 1000 );
                        response += "  messages[" + index + "] = '" + message.getText() + "';\n";
                        log.info("Message " + index + ": " + message.getText());
                        index ++;

                    } else {
                         break ;
                    }
                     

            } else {
                     break ;
            }
          }
        } catch  (Exception e) {

            log.error("Exception occurred: " + e.getStackTrace());
            e.printStackTrace();
       }  finally  {
             if  (queueConnection !=  null ) {
                 try  {
                    queueConnection.close();
                }  catch  (Exception e) {}
            }
        }
        response += "        </script>\n" +
        "    </head>\n" +
        "    <body onload='top.clientReceiverCallback()'>\n" +
        "    </body>\n" +
        "</html>\n";

         return  response;
    }
...
Рейтинг: 0 / 0
03.07.2007, 18:10:39
    #34636005
ИгорьМ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сокраняется сообщение JMS после пересоздания Queue
НАШОЛ!!!

перед удалением Queue надо вызвать метод

void removeAllMessages() по jmx
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / сокраняется сообщение JMS после пересоздания Queue / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]