Как MQ Client, такой как Java Client, прослушивает сообщения с MQ Server, на котором работает ServerConn Channel

Компилятор будет генерировать код для каждого экземпляра шаблона при использовании шаблона во время этапа компиляции. В процессе компиляции и компоновки файлы .cpp преобразуются в чистый объектный или машинный код, который в них содержит ссылки или неопределенные символы, поскольку файлы .h, которые включены в ваш main.cpp, не имеют реализации YET. Они готовы быть связаны с другим объектным файлом, который определяет реализацию для вашего шаблона, и, следовательно, у вас есть полный исполняемый файл a.out. Однако, поскольку шаблоны необходимо обработать на этапе компиляции, чтобы сгенерировать код для каждого экземпляра шаблона, который вы делаете в своей основной программе, ссылка не поможет, поскольку компиляция main.cpp в main.o, а затем компиляция вашего шаблона .cpp в template.o, а затем ссылка не будет достигать цели шаблонов, потому что я связываю различные экземпляры шаблонов с одной и той же реализацией шаблона! И шаблоны должны делать обратное, т. Е. Иметь одну реализацию, но допускать много доступных экземпляров посредством использования одного класса.

Значение typename T get заменяется во время этапа компиляции, а не на этапе связывания, поэтому, если я попытаюсь для компиляции шаблона без замены T в качестве конкретного типа значения, чтобы он не работал, потому что это определение шаблонов - это процесс времени компиляции, а мета-программирование btw - все об использовании этого определения.

0
задан JoshMc 4 March 2019 в 21:26
поделиться

2 ответа

Первое, что вы должны сделать, это пройти курс обучения по JMS / IBM MQ или перейти на новую конференцию IBM под названием: Техническая конференция по интеграции

Хорошо, теперь на ваши вопросы: [ 1111]

  1. Как создается соединение между MQ Client и MQ Server?

Вы просто запускаете метод createQueueConnection класса QueueConnectionFactory и задаете учетные данные.

QueueConnection conn = cf.createQueueConnection("myUserId", "myPwd");
  1. MQ Client инициирует соединение с сервером или сервер инициирует соединение с его потребителем?

Клиентское приложение MQ запускает соединение - всегда.

  1. Если у нас в MQ Client определен пул соединений, как клиент узнает, что ему нужно создавать больше соединений с сервером по мере увеличения количества сообщений на сервере? Как Клиент узнает о сообщениях на Сервере?

Архитектор или ведущий разработчик команды должен понять поток сообщений и шаблоны сообщений. Следовательно, они будут знать, на что установить количество пулов. Кроме того, много-много испытаний тоже. Некоторым клиентским приложениям потребуется всего 10 пулов, тогда как другим приложениям может потребоваться 50, потому что это большой поток.

  1. Есть ли связь между сервером и клиентом, которая сообщает клиенту о поступлении новых сообщений?

Вы используете метод createReceiver класса QueueSession для извлечения сообщение. Установите значение тайм-аута для метода createReceiver вместо непрерывного опроса администратора очередей.

Опять же, настоятельно рекомендуется некоторое обучение по использованию JMS / IBM MQ.

0
ответ дан Roger 4 March 2019 в 21:26
поделиться

Трудно однозначно говорить о том, как работает клиент IBM WebSphereMQ & amp; работа сервера, так как они с закрытым исходным кодом, но на основании моего опыта работы с другими реализациями обмена сообщениями я могу дать общее объяснение.

Соединение JMS инициируется клиентом к серверу. Клиент JMS использует javax.jms.ConnectionFactory для создания javax.jms.Connection, который является соединением между клиентом и сервером.

Обычно, когда клиент использует пул, пул либо заполняется «с нетерпением» (что означает, что определенное количество соединений создается, когда пул инициализируется, чтобы заполнить его до определенного уровня), либо «лениво» (что означает пул заполняется соединениями по одному, так как клиенты запрашивают их из пула). Если клиент запрашивает соединение из пула и если все соединения в пуле используются и максимальный размер соединений, разрешенных пулом, не достигнут, то будет создано другое соединение. Если пул достиг максимально допустимого размера (т. Е. Больше соединений не может быть создано), тогда клиент, запрашивающий соединение, должен будет ждать, пока другой клиент вернет свое соединение в пул, и в этот момент пул передаст его ожидающему. клиент.

Клиент JMS может узнать о сообщениях на сервере несколькими различными способами.

Если клиент JMS время от времени запрашивает у сервера сообщения, которые он имеет в определенной очереди, он может создать javax.jms.Consumer и использовать метод receive(). Этот метод может ожидать сообщения в очереди бесконечно, или он может принимать параметр тайм-аута, чтобы, если сообщение не приходит в течение указанного времени, возвращается вызов receive().

Если клиент JMS хочет получить сообщение из определенной очереди, как только сообщение поступит в очередь, он может создать реализацию javax.jms.MessageListener и зарегистрировать ее в очереди. Когда такой слушатель зарегистрирован в очереди, тогда, когда в очередь поступает сообщение, сервер отправит сообщение слушателю. Это иногда называют «обратным вызовом», поскольку сервер «перезванивает» клиенту.

0
ответ дан Justin Bertram 4 March 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: