다소 지능적인 MQ 통신 모듈을 구현하기를 기대하고 있습니다.이 모듈은 네트워크 연결의 중단을 허용해야합니다. 기본적으로 연결이 끊어진 경우 5 초마다 다시 연결을 시도해야합니다.MQ로 다시 연결 - 문제
문제는 다음과 같습니다. 나는 독서에 대해 다음 코드를 사용
이queueMessage = new MQMessage();
queueMessage.Format = MQC.MQFMT_STRING;
queueGetMessageOptions = new MQGetMessageOptions();
queueGetMessageOptions.Options = MQC.MQGMO_SYNCPOINT + MQC.MQGMO_WAIT + MQC.MQGMO_FAIL_IF_QUIESCING;
queueGetMessageOptions.WaitInterval = 50;
producerQueue.Get(queueMessage, queueGetMessageOptions);
msg = queueMessage.ReadBytes(queueMessage.MessageLength);
(물론 내가 성공적 등 전에 여기서 queueManager에 연결)
나는 다음과 같은 문제를 가지고 :이 루틴을 실행하지만, .Get
시 아무런 관련이 없을 때 , 코드는 단순히 멈추고 .Get
에 머물러 있습니다. 타이머를 사용하여 시간 제한이 있는지 (이론적으로 필요하지 않아도되는 것은 맞습니까?) 시간 초과시 재 연결을 시도합니다. 하지만이 시간 초과가 만료되면 queuemanager가 연결되었음을보고하고 명확하게 연결되어 있지 않음을 알 수 있습니다 (물리적 연결이 더 이상 존재하지 않음). SYNCPOINT를 사용하기 때문에이 문제가 발생했습니다. 작성 중에 연결을 끊을 때도 마찬가지입니다.이 경우 queuemanager에서 연결 끊기를 시도합니다. 제발 도와주세요, Get
과 Put
에 갇히지 않도록하려면 어떤 설정을 사용해야하며 MQException
을 던지거나 제어 할 수 있도록 설정해야합니까? 감사합니다.
업데이트 : 다음 코드를 사용하여 QueueManager에 연결했습니다.
Hashtable props = new Hashtable();
props.Add(MQC.HOST_NAME_PROPERTY, Host);
props.Add(MQC.PORT_PROPERTY, Port);
props.Add(MQC.CHANNEL_PROPERTY, ChannelInfo);
if(User!="") props.Add(MQC.USER_ID_PROPERTY, User);
if(Password!="") props.Add(MQC.PASSWORD_PROPERTY, Password);
props.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
queueManager = new MQQueueManager(QueueManagerName, props);
producerQueue = queueManager.AccessQueue(
ProducerQueueName,
MQC.MQOO_INPUT_AS_Q_DEF // open queue for input
+ MQC.MQOO_FAIL_IF_QUIESCING); // but not if MQM stopping
consumerQueue = queueManager.AccessQueue(
ConsumerQueueName,
MQC.MQOO_OUTPUT + MQC.MQOO_BROWSE + MQC.MQOO_INPUT_AS_Q_DEF // open queue for output
+ MQC.MQOO_FAIL_IF_QUIESCING); // but not if MQM stopping
정상적으로 코드가 정상적으로 작동한다고는 할 수 없습니다. 읽기/쓰기, 연결/끊기가 정상적으로 작동하므로 현재 문제를 파악해야합니다. 감사합니다.
전체 코드를 표시 할 수 있습니까? 재 연결 옵션은 연결이 생성되는 동안 설정됩니다. 즉 qm = new MQQueueManager ("", options); – Shashi
당신의 의견을 기다리며 방금 업데이트했습니다! – user1771386