powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / сокраняется сообщение JMS после пересоздания Queue
2 сообщений из 2, страница 1 из 1
сокраняется сообщение JMS после пересоздания Queue
    #34635947
ИгорьМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите!!
создаётся (не важно программно или через консоль) 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
сокраняется сообщение JMS после пересоздания Queue
    #34636005
ИгорьМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НАШОЛ!!!

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

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


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