Windows 서비스에서 여러 스레드 (작업)를 사용하여 구독자와 동일한 큐에 연결하려고하므로 메시지를 더 빠르게 처리 할 수 있습니다. 대기열에 연결하면 첫 번째 가입 스레드에서 메시지를 받고 나머지는 유휴 상태입니다. 다음은 내가 메시지를 구독받을 사용하고있는 코드는 다음과 같습니다websphere MQ에서 동일한 대기열에 여러 가입자가있을 수 있습니까?
private MQQueueManager _queueManager;
private MQQueue _queue;
private MQTopic _topic;
public bool isSubscribed = false;
public void Subscribe()
{
var queueManagerName = "myQueueManager";
var properties = new Hashtable();
//Set all the properties here
_queueManager = new MQQueueManager(queueManagerName, properties);
//Conect to Queue
_queue = _queueManager.AccessQueue("devQueue", MQC.MQOO_INPUT_AS_Q_DEF);
isSubscribed = true;
while (isSubscribed)
{
if (cancellationToken.IsCancellationRequested)
{
isSubscribed = false;
cancellationToken.ThrowIfCancellationRequested();
}
try
{
Receive(onMessageReceived);
}
catch (Exception ex)
{
Console.WriteLine("Exception: {0}", ex);
}
}
}
public override void Receive<T>(Action<T> onMessageReceived)
{
try
{
var dataReceived = new MQMessage();
_queue.Get(dataReceived);
T message;
message = (T)(object)dataReceived;
onMessageReceived(message);
_queueManager.Commit();
}
catch (Exception ex)
{
throw ex;
}
}
가 나는 또한 중 하나가 작동하지 않았다 큐에 액세스하기위한 MQC.MQOO_INPUT_SHARED
를 사용했습니다. 내가 놓친 게 있니?
실행중인 MQ의 버전 (dspmqver 출력)을 알려주십시오. – JasonE
@JasonE Version 8.0 – PushCode