|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
ggv Вот чего он такое и зачем я уже написал. Вы писали, что это набор библиотек и несколько второстепенных бинарников. Насколько я понял - тут то же самое. Просто я думал, что если я слинковал свое приложение с этими библиотеками при компиляции, потом мне уже ничего и не надо для того, что бы приложение работало. Но кстати сейчас ставил сервер - он увидел, что на машине уже установлен клиент. Видимо эти библиотечки еще и регистрируются. В общем что такое клиент я, кажется, понял наконец! :) Вот конкретный вопрос - если у меня установлен сервер. Могу ли я через MQSeries Explorer создать такую свою очередь, что бы туда попадали сообщения из какой-то удаленной очереди (я знаю ее адрес, порт, имя менеджера и имя очереди) и при этом делался browse (т.е. сообщения не удалялись) и как (и вообще - можно ли?) просто увидеть эту очередь в моем експлорере? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:39 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
для этого нужно, чтобы ваш партнер послал сообщение на ваш сервер. просто делать browse удаленной очереди нельзя, в нее можно только записывать (серверной программой). это можно сделать клиентской программой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:47 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
ggv Лучше всего - слать С-шный структуры, ну а для межплатформенности - в XDR их (часть RPC, представляет данные в машино-независимом формате, если кто не знает) Ну - с этим у нас "просто и легко" - такими проблемами глобальными голова не болит. :) Решение о функционировании очереди, доступе к ней, формате отдаваемых данных уже принято в одностороннем порядке. Так что нам осталось самое простое - сделать какой-то механизм выгребания оттуда данных и пользоваться. Никак не могк понять - нафига мне нужен MTS и\или XA? На схеме New Year просто он был показан как некая среда, которая давала доступ к MQ из MS SQL. А так - для моих задач он не нужен особо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:48 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
но клиентской программой нельзя записать сообщения в sql server. т.к в зтом случае нет XA :( можно клиентской программой переслать сообщение себе на сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:50 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
если приложение слинковано с клиентской бибблиотекой - больше ничего не надо для работы, это готовое приложение для работы. Никаких других процессов/компонент не требуется Explorer - на свалку Вся (!) работа с MQ строится на программировании. На использовании API Ну и как верно сказал NewYear - нельзя использовать MQGET для удаленной очереди MQOPEN может быть для удаленной очереди, но только на MQPUT То есть - если вы даже и развернете свой qmgr, и сделаете MQOPEN удаленной очереди - вы не сможете просматривать сообщения (то есть делать MQGET в режиме browse) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:53 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
>нафига мне нужен MTS и\или XA чтобы включить в одну транзакцию SQL Server и WebSphere MQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:53 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
NewYear - да, можно клиентской программой сделать MQPUT в local qmgr, но как же быть с двухфазной транзакцией? Между удаленным и локальным qmgr? Хотя, учитывая, что только в режиме browse..... Возможны дупликаты сообщений. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:55 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
ggvNewYear - да, можно клиентской программой сделать MQPUT в local qmgr, но как же быть с двухфазной транзакцией? Между удаленным и локальным qmgr? Хотя, учитывая, что только в режиме browse..... Возможны дупликаты сообщений. а там получается однофазная транзакция. фактически ведь сообщение только перекладывается в transmission queue на мейнфрейме. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 18:58 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
ну в таком случае - пойдет. Но опять же, на удаленной стороне надо определить канал/transmit queue к локальному qmgr А по трудозатратам это уже приближается к написанию проги, висящей на mainframe и отлавливающей нужные сообщения с направлением на локальный qmgr ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:03 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
NewYearно клиентской программой нельзя записать сообщения в sql server. т.к в зтом случае нет XA :( В смысле - sql server ругнется, если я попробую в хранимой процедуре получить сообщения без транзакций (например - во временную таблицу), а потом открою транзакцию с mssql, закину данные в нужную мне таблицу и, если все без ошибок, подтвержу транзакцию? Он, вообще, может. :( До сих пор не могу понять, почему он считает, что нужно поднять распределенную транзакцию, если в одной и той же процедуре встречается обращение к линкованному серверу и открытие транзакции с уже полностью локальными участниками. Удивительно, что если обращение к удаленному серверу выполнить в динамическом запросе, то он прекрасно обходится без удаленных транзакций. :) В DB2, на мой взгляд, с этим еще ужаснее. Нетак давно решали проблему - нам на удаленном сервере дали права на запуск одной процедуры, которая возвращала нужные данные. Пришлось писать отдельный exe, который запускался из хранимой процедуры и через stdout передавал, полученные от процедуры данные. Процедура их парсила и уже после этого только они попадали в базу. А вот как сделать хранимую процедуру на Db2 так, что бы она коннектилась к удаленному серверу, запускала там процедуру и результат этой процедуры записывала в таблицу своего локального сервера мне никто не смог подсказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:14 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
ggv Ну и как верно сказал NewYear - нельзя использовать MQGET для удаленной очереди MQOPEN может быть для удаленной очереди, но только на MQPUT То есть - если вы даже и развернете свой qmgr, и сделаете MQOPEN удаленной очереди - вы не сможете просматривать сообщения (то есть делать MQGET в режиме browse) Но это справедливо только для сервера? Клиент сможет открыть очередь для MQGET в режиме BROWSE? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:18 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
это та же самая прога. просто тогда нужно перетащить ее на мейнфрейм. ну а что делать? кстати, в етой проге еще не плохо бы запоминать последний отработанный CorrelId (или что там будет) и хранить его где-то еще (в другой очереди, например) на случай сбоя. а когда сообщений в обр. очереди перевалит за 10000 начнутся дикие тормоза. к тому же, если использовать клиента, при каждом запуске программы все сообщения придется пересылать по сети. а долго висеть она не сможет, потому что клиент. ну вот нафига, спрашивается, вообще этот browse и одна очередь для всех? нельзя что ли каждому дать свою очередь. а так в любом случае придется извращаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:20 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
Может ног только на ЛОКАЛЬНОМ QMGR NewYear имел ввиду , что без XA на удастся провести двухвазную транзакцию с одним участником - MQ, и вторым - MSSQL Как из SP db2 приконнектиться к удаленному db2 - скорее всег, никто не делал, никому не надо, вот никто и не полез пробовать. Я лично буду пробоватьт _только_ в случае это будет надо по работе. Если нет - то на удаленном сервере в MQ, на локальном - читаем и заливаем. Я практически все только так и делаю - все больше доступа к db2 через MQ - и гнать всех остальных в шею! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:22 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
>только на ЛОКАЛЬНОМ QMGR ЛОКАЛЬНЫЙ QMGR это тот к которму был mqconn. это может быть удаленная машина. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:28 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
nkulikov вот подсказал, и я с ним согласен - если уже есть работающее приложение, и его не хочется трогать по всяким причинам, но есть задача чать данных переливать в другую базу с возможной попутной трансформацией, то Q-Replication верный путь Его можно иметь ввиду и при разработке нового приложения. Если обмен межплатформенный - то или Information Integrator как промежуточное звено, или Q-Replication Event-Publisher Короче - множество путей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:30 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
Ну что такое локальный qmgr ф уже коротко упомянул выше :) Как раз тот к которому был MQCONN :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:31 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
если приложение склинковано с клиентской библиотекой; если оно открыло удаленную очередь и делает browse; если оно результаты просмотра сохраняет в базу -> то нету двухфазной транзакции и могут быть дубликаты в базе. То есть integrity надо обеспечивать средствами базы, не допуская повторного внесения данных. Можно попробовать опиратся на MsgID - но не факт, что они будут всегда уникальны, если их генерит qmgr - то уникальны, а если назначает прога - то пролет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:38 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
nkulikov подсказал - если опираться не только на MsgID, но и на PutTime - и фиксировать сообщения которые уже просмотрели (ну в базе например) то можно избежать дубликатов вот таким вот образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:41 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
ну и что. совпадать могут MsgId + PutTime. у меня полно таких сообщений. но у меня они различаются по CorrelId. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:48 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
NewYear>только на ЛОКАЛЬНОМ QMGR ЛОКАЛЬНЫЙ QMGR это тот к которму был mqconn. это может быть удаленная машина. ggvНу что такое локальный qmgr ф уже коротко упомянул выше :) Как раз тот к которому был MQCONN :) Я уж было напугался! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:49 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
NewYearэто та же самая прога. просто тогда нужно перетащить ее на мейнфрейм. ну а что делать? А просто никто не даст нам ничего разворачивать на мэйнфрейме. ну вот нафига, спрашивается, вообще этот browse и одна очередь для всех? нельзя что ли каждому дать свою очередь. а так в любом случае придется извращаться. Конечно извращаться. В таком варианте нет ни гарантии доставки (сообщение может быть убито до того, как его прочтут ВСЕ кому оно нужно) и нет гарантии доставки в ЕДИНСТВЕННОМ экземпляре, потому что никто не мешает читать уже приходившие сообщения. Правильно? И в таком варианте только дополнительные мучения от очереди этой. Я ж и писал - как было бы здорово работать с федеративной табличкой или вьюшкой. А отличать, я надеюсь, будем по естественному ключу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 19:55 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
Road Runner - ну тут ты опфть не прав. Мучения все из-за _неправильного_ использования MQ И никаких преимуществ и федеративной таблички нету - одни недостатки. Ну сам подумай - MQ это некий специальный вид IPC - Inter Process Communication - обладающий свойствами транзакционности, асинхронности, и транспорта. Никакая общая табличка и близко к таким возможностям не приблизится. Но вот судя по вашей задаче, у вас не тот тип работы с MQ выбран. Судя по тому, что сообщения должны читать многие - это чистый publish/subscribe, и в таком случае никаких мучений, проблем, и тормозов. Один/нусколько публикуют сообщения, все, кто подписался на "тему" - получают его. И вообще - работа с MQ требует соответсвующего дизайна системы, приложений. С подходом "одна общая табличка" MQ будет приносить одни проблемы. Ну и само собой - нежелание делать дизайн под соответсвующий IPC (MQ в данном случае) тоже принесет одни проблемы. Это только ораклисты способны делать IPC через oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2005, 08:38 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
ggv Мучения все из-за _неправильного_ использования MQ Как выяснилось - все же будет правильное или почти правильное использование. Режим просмотра нужен только пока - именно нашей очереди нет еще и есть одна общая очередь из которой можно потренироваться читать и парсить, в нее положили несколько сообщений. Реальная схема будет такая - есть выделенная (для нас) очередь расположенная на их менеджере (на OS/390). Наше приложение или сервер (насколько я понял с сервером так не получится) должны запросить сообщения, которые "ждут" нас, получить эти сообщения, поместить в БД, подтвердить их получение (что бы они удалились из очереди). Очевидно, тут транзакция была бы весьма кстати. А какие варианты есть у меня, кроме клиента перекладывающего сообщения в мою очередь (и в этом случае, насколько я понимаю, у меня все равно не будет транзакции между моим менеджером очереди и их, правильно?) ? ggv И никаких преимуществ и федеративной таблички нету - одни недостатки. Ну сам подумай - MQ это некий специальный вид IPC - Inter Process Communication - обладающий свойствами транзакционности, асинхронности, и транспорта. Никакая общая табличка и близко к таким возможностям не приблизится. Если у Вас есть время, то я бы с удовольствием узнал бы недостатки такого способа (таблички) - пока я их не вижу. Вот смотрите по поводу свойств MQ: 1. Транзакционность - двухфазная транзакция в случае федеративной таблички не нужна, т.к. при неудачном завершении транзакции на стороне сервера-приемника всегда можно получить эти же данные повторно. Гарантию отсутствия дубликатов записей можно получить при наличии в таблице авто-инкрементального ключа. 2. Асинхронность - на полную катушку, поставщик данных обеспечивает гарантированное наличие необходимых данных в таблице, приемники читают те данные, которые еще ими не были прочитаны. 3. Транспорт - практически любой сервер БД поддерживает некоторые протоколы, которые позволяют получать информацию от удаленных систем с гарантией ее неизменности при передаче. Кроме этого - во многих БД есть встроенные производителем механизмы репликации, есть подозрение, что они могут быть достаточно эффективны. Минусы MQ (на мой взгляд): 1. Дополнительные затраты (либо на написание своего клиента по работе с MQ, либо на покупку неких мостов, менеджеров) 2. Дополнительная головная боль (и потеря производительности) по стандартизации формата сообщения, организации парсинга этого сообщения. Я ни в коем случае не ругаю MQ, мне просто хочется понять. Ну и в любом случае мне придется с ним работать. ggv Это только ораклисты способны делать IPC через oracle Наверно еще MS SQL-ники ! ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2005, 10:02 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
автор Реальная схема будет такая - есть выделенная (для нас) очередь расположенная на их менеджере (на OS/390). Наше приложение или сервер (насколько я понял с сервером так не получится) должны запросить сообщения, которые "ждут" нас, получить эти сообщения, поместить в БД, подтвердить их получение (что бы они удалились из очереди). ну осталось настроить каналы и вот эту "выделенная (для нас) очередь" сделать как Remote Queue Definition. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2005, 10:25 |
|
MQSeries clients. Вопрос по конфигурации.
|
|||
---|---|---|---|
#18+
абсолютно прав NewYear - вот в этом описанном вами случае вы тут же предложили _неправильный_ способ работы. Но чтение application programming guide и intercommunication guide будут хорошим подспорьем, в том числе в плане понимания преимуществ. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2005, 10:43 |
|
|
start [/forum/topic.php?fid=43&msg=33183652&tid=1605823]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 286ms |
total: | 441ms |
0 / 0 |