Это в случае, если мы инициаторы, но мы-то хотим ничего не делать, а тупо ловить сообщенияkrukovna писал(а): Название очереди может быть любое, как я понимаю. Главное указать получателя - т.е. экземпляр OnAir. А он ответит в ту же очередь.
Автоматизация внешних приложений
Модераторы: ElenVR, Людмила, PR
-
kasa
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
-
krukovna
- Сообщения: 57
- Зарегистрирован: 30 май 2007 17:18
хех
а как насчет результата?) Имхо результат важнее чем ничего не делать))
Не. я тоже бы за, если бы сообщения сами валились в очередь. Но вопрос. Тогда надо отслеживать, что они есть новые? Задавать те, которые нам нужны, а какие нет? Опять получается шибко умный софт. а не хитрые погарммеры
Да и тоже не две кнопки нажать получится. Так что не шило ли на мыло меняется?
а как насчет результата?) Имхо результат важнее чем ничего не делать))
Не. я тоже бы за, если бы сообщения сами валились в очередь. Но вопрос. Тогда надо отслеживать, что они есть новые? Задавать те, которые нам нужны, а какие нет? Опять получается шибко умный софт. а не хитрые погарммеры
-
kasa
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
Зачем отслеживать, что они новые? Исходя из интерфейса очереди (нет средств удаления сообщений), одно и то же сообщение не может прийти дваждыkrukovna писал(а): Не. я тоже бы за, если бы сообщения сами валились в очередь. Но вопрос. Тогда надо отслеживать, что они есть новые? Задавать те, которые нам нужны, а какие нет? Опять получается шибко умный софт. а не хитрые погарммерыДа и тоже не две кнопки нажать получится. Так что не шило ли на мыло меняется?
А наше/не наше сортируется буквально тремя строчками кода...
-
krukovna
- Сообщения: 57
- Зарегистрирован: 30 май 2007 17:18
-
kasa
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
Не, не так. Там же при создании очереди указывается окно, в которое служба сообщение будет слать оконные сообщений.krukovna писал(а):"Отслеживать" - я про другое немного. Надо будет дергать не OnAir, а очередь) так спросил - ответил, а так проверять, не сказал ли чего. Я не прав?
Вот когда такое оконное пришло, тогда и надо очередь опрашивать...и только тогда.
-
krukovna
- Сообщения: 57
- Зарегистрирован: 30 май 2007 17:18
-
kasa
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
-
krukovna
- Сообщения: 57
- Зарегистрирован: 30 май 2007 17:18
-
Даниленко Сергей
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
Приятно видеть такое обсуждение
Хочется внести некоторую ясность в работу с MessageServer.
1)Каждый экземпляр программы OnAir всегда заводит очередь в MessageServer.
2)Все очереди создаются только на локальной машине.
3)Чтобы послать команду в OnAir (именно команду для осуществления в нем каких-нибудь действий, но не для запроса о его состоянии) очередь в клиентском приложении создавать не нужно. Команда посылается в очередь OnAir (см. п. 1). Здесь используется интерфейс Connection и его метод посылки сообщения.
4)Чтобы получить информацию из OnAir нужно создать очередь в клиентском приложении. После этого следует послать команду на запрос состояния в очередь OnAir. В данном случае используется точно такой же метод посылки сообщения, но интерфейса Queue. Программа OnAir, получив запрос на "состояние", ответит в очередь клиентского приложения. В своем клиентском приложении вы должны организовать опрос очереди для "выемки" ответа о состоянии OnAir.
5)Методы посылки сообщений в интерфейсах Queue и Connection одинаковы. Но в первом случае при посылке сообщения (через Queue) заполняется поле с "обратным адресом" и получатель сообщения знает куда ответить. Во втором случае (через Connection) поле "обратный адрес" не заполняется и связь получается односторонней. Заполнение этих полей происходит автоматически.
Хочется внести некоторую ясность в работу с MessageServer.
1)Каждый экземпляр программы OnAir всегда заводит очередь в MessageServer.
2)Все очереди создаются только на локальной машине.
3)Чтобы послать команду в OnAir (именно команду для осуществления в нем каких-нибудь действий, но не для запроса о его состоянии) очередь в клиентском приложении создавать не нужно. Команда посылается в очередь OnAir (см. п. 1). Здесь используется интерфейс Connection и его метод посылки сообщения.
4)Чтобы получить информацию из OnAir нужно создать очередь в клиентском приложении. После этого следует послать команду на запрос состояния в очередь OnAir. В данном случае используется точно такой же метод посылки сообщения, но интерфейса Queue. Программа OnAir, получив запрос на "состояние", ответит в очередь клиентского приложения. В своем клиентском приложении вы должны организовать опрос очереди для "выемки" ответа о состоянии OnAir.
5)Методы посылки сообщений в интерфейсах Queue и Connection одинаковы. Но в первом случае при посылке сообщения (через Queue) заполняется поле с "обратным адресом" и получатель сообщения знает куда ответить. Во втором случае (через Connection) поле "обратный адрес" не заполняется и связь получается односторонней. Заполнение этих полей происходит автоматически.
-
kasa
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
-
vd
- Сообщения: 2311
- Зарегистрирован: 05 мар 2003 19:21
-
kasa
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
-
Даниленко Сергей
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
Вообще-то мы вас спрашивали не о внутренностях вашего приложения. Нас не интересовала ни структура ваших классов, ни на чем вы пишите (васик, шарп, мфц). Нас интересовала только общая функциональность - что делает ваше приложение: посылает команды в OnAir, опрашивает состояние? Вы же почему-то из этого начали из этого делать великую тайну, хотя при этом же сразу и ответилиЦитирую слова вашего коллеги:
Цитата:А вообще, мне не надо знать как оно устроено внутри...мне надо знать, шлет ли местер-сервер дубликату команды сам или дубликат опрашивает состояние мастера?А что это такая большая военная тайна?
Система зеркалирования не предусматривает опроса состояния ведомого сервера со стороны ведущего - зачем это нужно? Задача системы зеркалирования - обеспечить одинаковость расписаний на обоих машинах. Чтобы все модификации расписания на одной машине повторялись и на другой. Соответственно посылаются только команды на исполнение. Зеркалирование может быть настроено как по системе ведущий-ведомый (команды летят только с одного сервера на другой), так и по системе "равноправные" (когда модификация расписания может происходить на обоих машинах и команды летят как на один, так и на другой сервера).мне надо знать, шлет ли местер-сервер дубликату команды сам или дубликат опрашивает состояние мастера?
-
kasa
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
-
vd
- Сообщения: 2311
- Зарегистрирован: 05 мар 2003 19:21
Да, можете. Нужно создать очередь сообщений для приема. Для этого нужно сначала создать объект с интерфейсом ISLMSConnection через CoCreateInstance, затем с помощью вызова из него метода CreateQueue создать объект с интерфейсом ISLMSQueue.
При создании очереди указывается окно, в которое будет приходить сообщение-нотификация. В обработчике этого сообщения нужно вызывать методы GetCounts и GetMessage из ISLMSQueue, чтобы уже вынуть сообщения из очереди со всеми параметрами.
Подробнее читайте в документе по SLMessageServer.
При создании очереди указывается окно, в которое будет приходить сообщение-нотификация. В обработчике этого сообщения нужно вызывать методы GetCounts и GetMessage из ISLMSQueue, чтобы уже вынуть сообщения из очереди со всеми параметрами.
Подробнее читайте в документе по SLMessageServer.