powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / MQSeries clients. Вопрос по конфигурации.
25 сообщений из 124, страница 3 из 5
MQSeries clients. Вопрос по конфигурации.
    #33183530
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ggv
Вот чего он такое и зачем я уже написал.

Вы писали, что это набор библиотек и несколько второстепенных бинарников. Насколько я понял - тут то же самое. Просто я думал, что если я слинковал свое приложение с этими библиотеками при компиляции, потом мне уже ничего и не надо для того, что бы приложение работало. Но кстати сейчас ставил сервер - он увидел, что на машине уже установлен клиент. Видимо эти библиотечки еще и регистрируются. В общем что такое клиент я, кажется, понял наконец! :)

Вот конкретный вопрос - если у меня установлен сервер. Могу ли я через MQSeries Explorer создать такую свою очередь, что бы туда попадали сообщения из какой-то удаленной очереди (я знаю ее адрес, порт, имя менеджера и имя очереди) и при этом делался browse (т.е. сообщения не удалялись) и как (и вообще - можно ли?) просто увидеть эту очередь в моем експлорере?
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183551
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для этого нужно, чтобы ваш партнер послал сообщение на ваш сервер.
просто делать browse удаленной очереди нельзя, в нее можно только записывать (серверной программой).

это можно сделать клиентской программой.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183553
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ggv
Лучше всего - слать С-шный структуры, ну а для межплатформенности - в XDR их (часть RPC, представляет данные в машино-независимом формате, если кто не знает)

Ну - с этим у нас "просто и легко" - такими проблемами глобальными голова не болит. :) Решение о функционировании очереди, доступе к ней, формате отдаваемых данных уже принято в одностороннем порядке. Так что нам осталось самое простое - сделать какой-то механизм выгребания оттуда данных и пользоваться.

Никак не могк понять - нафига мне нужен MTS и\или XA? На схеме New Year просто он был показан как некая среда, которая давала доступ к MQ из MS SQL. А так - для моих задач он не нужен особо.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183561
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но клиентской программой нельзя записать сообщения в sql server. т.к в зтом случае нет XA :(

можно клиентской программой переслать сообщение себе на сервер
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183572
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
если приложение слинковано с клиентской бибблиотекой - больше ничего не надо для работы, это готовое приложение для работы. Никаких других процессов/компонент не требуется
Explorer - на свалку
Вся (!) работа с MQ строится на программировании. На использовании API
Ну и как верно сказал NewYear - нельзя использовать MQGET для удаленной очереди
MQOPEN может быть для удаленной очереди, но только на MQPUT
То есть - если вы даже и развернете свой qmgr, и сделаете MQOPEN удаленной очереди - вы не сможете просматривать сообщения (то есть делать MQGET в режиме browse)
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183573
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>нафига мне нужен MTS и\или XA

чтобы включить в одну транзакцию SQL Server и WebSphere MQ.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183579
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
NewYear - да, можно клиентской программой сделать MQPUT в local qmgr, но как же быть с двухфазной транзакцией? Между удаленным и локальным qmgr?
Хотя, учитывая, что только в режиме browse.....
Возможны дупликаты сообщений.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183586
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggvNewYear - да, можно клиентской программой сделать MQPUT в local qmgr, но как же быть с двухфазной транзакцией? Между удаленным и локальным qmgr?
Хотя, учитывая, что только в режиме browse.....
Возможны дупликаты сообщений.

а там получается однофазная транзакция. фактически ведь сообщение только перекладывается в transmission queue на мейнфрейме.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183599
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
ну в таком случае - пойдет.
Но опять же, на удаленной стороне надо определить канал/transmit queue к локальному qmgr
А по трудозатратам это уже приближается к написанию проги, висящей на mainframe и отлавливающей нужные сообщения с направлением на локальный qmgr
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183613
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NewYearно клиентской программой нельзя записать сообщения в sql server. т.к в зтом случае нет XA :(

В смысле - sql server ругнется, если я попробую в хранимой процедуре получить сообщения без транзакций (например - во временную таблицу), а потом открою транзакцию с mssql, закину данные в нужную мне таблицу и, если все без ошибок, подтвержу транзакцию? Он, вообще, может. :( До сих пор не могу понять, почему он считает, что нужно поднять распределенную транзакцию, если в одной и той же процедуре встречается обращение к линкованному серверу и открытие транзакции с уже полностью локальными участниками. Удивительно, что если обращение к удаленному серверу выполнить в динамическом запросе, то он прекрасно обходится без удаленных транзакций. :) В DB2, на мой взгляд, с этим еще ужаснее. Нетак давно решали проблему - нам на удаленном сервере дали права на запуск одной процедуры, которая возвращала нужные данные. Пришлось писать отдельный exe, который запускался из хранимой процедуры и через stdout передавал, полученные от процедуры данные. Процедура их парсила и уже после этого только они попадали в базу. А вот как сделать хранимую процедуру на Db2 так, что бы она коннектилась к удаленному серверу, запускала там процедуру и результат этой процедуры записывала в таблицу своего локального сервера мне никто не смог подсказать.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183621
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ggv
Ну и как верно сказал NewYear - нельзя использовать MQGET для удаленной очереди
MQOPEN может быть для удаленной очереди, но только на MQPUT
То есть - если вы даже и развернете свой qmgr, и сделаете MQOPEN удаленной очереди - вы не сможете просматривать сообщения (то есть делать MQGET в режиме browse)
Но это справедливо только для сервера? Клиент сможет открыть очередь для MQGET в режиме BROWSE?
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183625
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это та же самая прога. просто тогда нужно перетащить ее на мейнфрейм.
ну а что делать?

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

а когда сообщений в обр. очереди перевалит за 10000 начнутся дикие тормоза.

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


ну вот нафига, спрашивается, вообще этот browse и одна очередь для всех? нельзя что ли каждому дать свою очередь. а так в любом случае придется извращаться.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183627
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Может ног только на ЛОКАЛЬНОМ QMGR

NewYear имел ввиду , что без XA на удастся провести двухвазную транзакцию с одним участником - MQ, и вторым - MSSQL

Как из SP db2 приконнектиться к удаленному db2 - скорее всег, никто не делал, никому не надо, вот никто и не полез пробовать.
Я лично буду пробоватьт _только_ в случае это будет надо по работе.
Если нет - то на удаленном сервере в MQ, на локальном - читаем и заливаем. Я практически все только так и делаю - все больше доступа к db2 через MQ - и гнать всех остальных в шею! :)
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183637
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>только на ЛОКАЛЬНОМ QMGR

ЛОКАЛЬНЫЙ QMGR это тот к которму был mqconn. это может быть удаленная машина.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183638
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
nkulikov вот подсказал, и я с ним согласен - если уже есть работающее приложение, и его не хочется трогать по всяким причинам, но есть задача чать данных переливать в другую базу с возможной попутной трансформацией, то Q-Replication верный путь
Его можно иметь ввиду и при разработке нового приложения.
Если обмен межплатформенный - то или Information Integrator как промежуточное звено, или Q-Replication Event-Publisher

Короче - множество путей.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183640
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Ну что такое локальный qmgr ф уже коротко упомянул выше :)
Как раз тот к которому был MQCONN :)
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183652
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
если приложение склинковано с клиентской библиотекой;
если оно открыло удаленную очередь и делает browse;
если оно результаты просмотра сохраняет в базу ->
то нету двухфазной транзакции и могут быть дубликаты в базе.
То есть integrity надо обеспечивать средствами базы, не допуская повторного внесения данных.
Можно попробовать опиратся на MsgID - но не факт, что они будут всегда уникальны, если их генерит qmgr - то уникальны, а если назначает прога - то пролет.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183655
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
nkulikov подсказал - если опираться не только на MsgID, но и на PutTime - и фиксировать сообщения которые уже просмотрели (ну в базе например) то можно избежать дубликатов вот таким вот образом.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183663
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и что. совпадать могут MsgId + PutTime. у меня полно таких сообщений.
но у меня они различаются по CorrelId.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183664
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NewYear>только на ЛОКАЛЬНОМ QMGR

ЛОКАЛЬНЫЙ QMGR это тот к которму был mqconn. это может быть удаленная машина.

ggvНу что такое локальный qmgr ф уже коротко упомянул выше :)
Как раз тот к которому был MQCONN :)

Я уж было напугался! :)
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183668
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NewYearэто та же самая прога. просто тогда нужно перетащить ее на мейнфрейм.
ну а что делать?

А просто никто не даст нам ничего разворачивать на мэйнфрейме.


ну вот нафига, спрашивается, вообще этот browse и одна очередь для всех? нельзя что ли каждому дать свою очередь. а так в любом случае придется извращаться.
Конечно извращаться. В таком варианте нет ни гарантии доставки (сообщение может быть убито до того, как его прочтут ВСЕ кому оно нужно) и нет гарантии доставки в ЕДИНСТВЕННОМ экземпляре, потому что никто не мешает читать уже приходившие сообщения. Правильно? И в таком варианте только дополнительные мучения от очереди этой. Я ж и писал - как было бы здорово работать с федеративной табличкой или вьюшкой. А отличать, я надеюсь, будем по естественному ключу.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33183960
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Road Runner - ну тут ты опфть не прав.
Мучения все из-за _неправильного_ использования MQ
И никаких преимуществ и федеративной таблички нету - одни недостатки.
Ну сам подумай - MQ это некий специальный вид IPC - Inter Process Communication - обладающий свойствами транзакционности, асинхронности, и транспорта.
Никакая общая табличка и близко к таким возможностям не приблизится.
Но вот судя по вашей задаче, у вас не тот тип работы с MQ выбран.
Судя по тому, что сообщения должны читать многие - это чистый publish/subscribe, и в таком случае никаких мучений, проблем, и тормозов.
Один/нусколько публикуют сообщения, все, кто подписался на "тему" - получают его.
И вообще - работа с MQ требует соответсвующего дизайна системы, приложений. С подходом "одна общая табличка" MQ будет приносить одни проблемы. Ну и само собой - нежелание делать дизайн под соответсвующий IPC (MQ в данном случае) тоже принесет одни проблемы.
Это только ораклисты способны делать IPC через oracle
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33184107
Road Runner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ggv
Мучения все из-за _неправильного_ использования MQ

Как выяснилось - все же будет правильное или почти правильное использование. Режим просмотра нужен только пока - именно нашей очереди нет еще и есть одна общая очередь из которой можно потренироваться читать и парсить, в нее положили несколько сообщений.
Реальная схема будет такая - есть выделенная (для нас) очередь расположенная на их менеджере (на OS/390). Наше приложение или сервер (насколько я понял с сервером так не получится) должны запросить сообщения, которые "ждут" нас, получить эти сообщения, поместить в БД, подтвердить их получение (что бы они удалились из очереди). Очевидно, тут транзакция была бы весьма кстати. А какие варианты есть у меня, кроме клиента перекладывающего сообщения в мою очередь (и в этом случае, насколько я понимаю, у меня все равно не будет транзакции между моим менеджером очереди и их, правильно?) ?

ggv
И никаких преимуществ и федеративной таблички нету - одни недостатки.
Ну сам подумай - MQ это некий специальный вид IPC - Inter Process Communication - обладающий свойствами транзакционности, асинхронности, и транспорта.
Никакая общая табличка и близко к таким возможностям не приблизится.

Если у Вас есть время, то я бы с удовольствием узнал бы недостатки такого способа (таблички) - пока я их не вижу. Вот смотрите по поводу свойств MQ:
1. Транзакционность - двухфазная транзакция в случае федеративной таблички не нужна, т.к. при неудачном завершении транзакции на стороне сервера-приемника всегда можно получить эти же данные повторно. Гарантию отсутствия дубликатов записей можно получить при наличии в таблице авто-инкрементального ключа.
2. Асинхронность - на полную катушку, поставщик данных обеспечивает гарантированное наличие необходимых данных в таблице, приемники читают те данные, которые еще ими не были прочитаны.
3. Транспорт - практически любой сервер БД поддерживает некоторые протоколы, которые позволяют получать информацию от удаленных систем с гарантией ее неизменности при передаче. Кроме этого - во многих БД есть встроенные производителем механизмы репликации, есть подозрение, что они могут быть достаточно эффективны.

Минусы MQ (на мой взгляд):
1. Дополнительные затраты (либо на написание своего клиента по работе с MQ, либо на покупку неких мостов, менеджеров)
2. Дополнительная головная боль (и потеря производительности) по стандартизации формата сообщения, организации парсинга этого сообщения.

Я ни в коем случае не ругаю MQ, мне просто хочется понять. Ну и в любом случае мне придется с ним работать.


ggv
Это только ораклисты способны делать IPC через oracle
Наверно еще MS SQL-ники ! ;)
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33184181
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Реальная схема будет такая - есть выделенная (для нас) очередь расположенная на их менеджере (на OS/390). Наше приложение или сервер (насколько я понял с сервером так не получится) должны запросить сообщения, которые "ждут" нас, получить эти сообщения, поместить в БД, подтвердить их получение (что бы они удалились из очереди).


ну осталось настроить каналы и вот эту "выделенная (для нас) очередь" сделать как Remote Queue Definition.
...
Рейтинг: 0 / 0
MQSeries clients. Вопрос по конфигурации.
    #33184239
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
абсолютно прав NewYear - вот в этом описанном вами случае вы тут же предложили _неправильный_ способ работы.
Но чтение application programming guide и intercommunication guide будут хорошим подспорьем, в том числе в плане понимания преимуществ.
...
Рейтинг: 0 / 0
25 сообщений из 124, страница 3 из 5
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / MQSeries clients. Вопрос по конфигурации.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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