Способ, которым клиент MQ и сервер MQ принимают решение ВЫРЕЗАТЬ соединение, основан на согласованном значении сердцебиения (HBINT
) для работающего канала SVRCONN
.Согласованный HBINT
всегда является наивысшим значением, согласованным между SVRCONN
и клиентским приложением.
Примечание: SVRCONN
HBINT
имеет значение по умолчанию 300
.
Время ожидания определяется одним из двух способов:
- Если согласованное значение
HBINT
меньше 60, время ожидания равно 2x HBINT
. - Еслисогласованный
HBINT
больше или равен 60, время ожидания равно HBINT
+ 60.
В зависимости от области клиентов .NET, связанных с HBINT
:
APAR IT26614 исправляет следующие три проблемы:
В неуправляемом или управляемом режиме задокументировано, что если вы не используете CCDT, HBINT
будет использовать значениеSVRCONN
канал.В действительности, если не использовать CCDT, HBINT
на стороне клиента по умолчанию будет 300
, поэтому это самое низкое значение HBINT
, которое вы увидите.
Специально для Managed .NETна стороне клиента HBINT
не может быть ниже SVRCONN
HBINT
, соединение с 2059 не будет установлено. Эта проблема касается как с, так и без CCDT.
- с CCDT, который вы не можете установить
CLNTCONN
HBINT
до значения, меньшего SVRCONN
HBINT
- без CCDT, на вас повлияет, если для
SVRCONN
HBINT
установлено значение 301
или выше
Специально для Managed .NET тайм-аут приема на стороне клиента рассчитывался в миллисекундах, а не секундах.В этом случае дефект присутствовал в соответствии с IBM в течение длительного времени, но не появлялся до тех пор, пока APAR IT16167: Управляемое клиентское приложение .NET не отправляет запрос пульса в администратор очередей , представленный в 8.0.0.10и 9.0.0.4 (IBM также подтвердила, что это присутствует в GA 9.1.0.0).Причина, по которой раньше это не было проблемой, заключалась в том, что Managed .NET никогда не инициировал сердцебиение, менеджер очередей всегда отправлял сердцебиение со скоростью HBINT + 5 секунд, а клиент .NET отвечал.Как только это было исправлено, просчет времени ожидания приема себя представил.
The fix is targeted for delivery in the following PTFs:
Version Maintenance Level
v8.0 8.0.0.13
v9.0 LTS 9.0.0.7
v9.1 CD 9.1.3
v9.1 LTS 9.1.0.3
По состоянию на 12 июля 2019 года только 9.0.0.7 и 9.1.3 быливыпущен и может быть загружен из следующих мест:
Если вы не используете версию amqmdnet.dll
, которая включает в себя вышеуказанный APAR, или вы не попросите IBM предоставить вам IFIX для любой более низкой версии,единственный способ достичь HBINT ниже 300 потребовал бы, чтобы SVRCONN
HBINT
был установлен на более низкое значение в сочетании с клиентом, использующим CCDT с CLNTCONN
HBINT
, установленным на более низкое значение.В зависимости от неуправляемого или управляемого .NET у вас есть два варианта:
- В неуправляемом .NET вы можете установить
CLNTCONN
HBINT
на 1
и разрешить клиенту всегда вести переговоры доSVRCONN
HBINT
значение.Затем вам нужно, чтобы администратор MQ установил для SVRCONN
HBINT
желаемое значение. - В Managed .NET вам потребуется администратор MQ, чтобы установить для
SVRCONN
HBINT
желаемое значение.и затем вам нужно будет установить для CCDT CLNTCONN
HBINT
то же значение, что и для SVRCONN
HBINT
.
Если вы используете версию amqmdnet.dll
, который включает в себя вышеуказанный APAR, или вы просите IBM предоставить вам IFIX для любой более низкой версии, как это будет работать:
- Если CCDT не используется, клиентская сторона будет использовать эквивалентный
HBINT(1)
и будет согласовываться до значения SVRCONN
. - При использовании CCDT
CLNTCONN
может иметь HBINT
, установленный на 1
, что приведет к тому же поведению, что и выше, когдане используя CCDT, HBINT
будет согласовывать до значения SVRCONN
.
Независимо от того, используете ли CCDT с CLNTCONN
HBINT
, установленным на 1
, или не используете CCDT, где на стороне клиента будет использоваться HBINT(1)
, вам нужно будет попросить администратора MQ установить SVRCONN
HBINT
до более низкого значения для достижения более короткого времени ожидания.
Пример настройки HBINT
на канале CCDT CLNTCONN
:
DEFINE CHL(CLIENT_CHL) CHLTYPE(CLNTCONN) CONNAME('1.2.3.4(9999)') QMNAME(ABC) HBINT(1)