powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / MQSeries как сделать RollBack одному сообщению?
5 сообщений из 5, страница 1 из 1
MQSeries как сделать RollBack одному сообщению?
    #38654614
arba2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартный код. Вопрос внутри.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim MQSes ,  MQMessage ,  MQQueueManager ,  MQQueue
....
Set MQMessage = MQSes.AccessMessage()
Set Opt = MQSes.AccessGetMessageOptions()
Opt.Options = MQGMO_SYNCPOINT 

...

DO
   Call  MQQueue.Get( MQMessage ,  Opt) 
   inXml$ = MQMessage.ReadString(MQMessage.MessageLength)

   if not ReadyForThisXML(inXml$) then
// и тут я понимаю что обработать в данный момент этот xml не могу. Могу позже. 
// Мне надо его вернуть в очередь (не комитить GET), и продолжить обрабатывать те, что еще есть в очереди. КАК ?
   else
      ....
      Call MQQueueManager.Commit 
   end if
LOOP

Call MQQueue.close()
Call MQQueueManager.disconnect()
...
Рейтинг: 0 / 0
MQSeries как сделать RollBack одному сообщению?
    #38655090
netics
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Механиз Backout queue подойдёт в этой ситуации? https://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm35205_.htm
Ну и в принципе никто не мешает брать сообщения, отказываться от его обработки, класт обратно с сохранением всех заголовков.
...
Рейтинг: 0 / 0
MQSeries как сделать RollBack одному сообщению?
    #38655192
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arba2014Стандартный код. Вопрос внутри.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim MQSes ,  MQMessage ,  MQQueueManager ,  MQQueue
....
Set MQMessage = MQSes.AccessMessage()
Set Opt = MQSes.AccessGetMessageOptions()
Opt.Options = MQGMO_SYNCPOINT 

...

DO
   Call  MQQueue.Get( MQMessage ,  Opt) 
   inXml$ = MQMessage.ReadString(MQMessage.MessageLength)

   if not ReadyForThisXML(inXml$) then
// и тут я понимаю что обработать в данный момент этот xml не могу. Могу позже. 
// Мне надо его вернуть в очередь (не комитить GET), и продолжить обрабатывать те, что еще есть в очереди. КАК ?
   else
      ....
      Call MQQueueManager.Commit 
   end if
LOOP

Call MQQueue.close()
Call MQQueueManager.disconnect()



так не получится

можно например читать сообщения не деструктивно (c опцией browse)
когда нужное сооющение находится, можно вычитать его по message id i corell id

или можно прочитать сообщение, и, если оно не подходит, переложить его в другую очередь и читать далее.
позже перекинуть его обратно, самое простое - чисто через какое-то время

но лучше всего не хранить сообщения в очереди
вычитайте его и сохраните куда-нибудь, в базу в табличку например
и там потом обрабатывайте

а еще лучше сделайте так, чтобы вы всегда могли обрабатывать любое сообщение
...
Рейтинг: 0 / 0
MQSeries как сделать RollBack одному сообщению?
    #38655193
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neticsМеханиз Backout queue подойдёт в этой ситуации? https://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm35205_.htm
Ну и в принципе никто не мешает брать сообщения, отказываться от его обработки, класт обратно с сохранением всех заголовков.

не, не стоит так делать, у тс прикладная логика а не битое сообщение
обратно клать тем более не надо
можно просто зациклиться читая одно и то же сообщение 100500 раз
...
Рейтинг: 0 / 0
MQSeries как сделать RollBack одному сообщению?
    #38655316
arba2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новый Год
так не получится

можно например читать сообщения не деструктивно (c опцией browse)
когда нужное сооющение находится, можно вычитать его по message id i corell id

или можно прочитать сообщение, и, если оно не подходит, переложить его в другую очередь и читать далее.
позже перекинуть его обратно, самое простое - чисто через какое-то время

но лучше всего не хранить сообщения в очереди
вычитайте его и сохраните куда-нибудь, в базу в табличку например
и там потом обрабатывайте

а еще лучше сделайте так, чтобы вы всегда могли обрабатывать любое сообщение

Эти способы понятны.

Печально конечно.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / MQSeries как сделать RollBack одному сообщению?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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