private void onReceiveUnsubscribeRequest(MessageEnvelope message, ITransport transport) { IConsumer <T> consumer = null; lock (consumers) { if (consumers.ContainsKey(message.Body.UnsubscribeRequest.ConsumerId)) { consumer = consumers[message.Body.UnsubscribeRequest.ConsumerId]; } } MessageEnvelope resultMsg = new MessageEnvelope(); MessageBody body = new MessageBody(); UnsubscribeResult unsubscribeResult = new UnsubscribeResult(); UnsubscribeResultCode unsubscribeResultCode = new UnsubscribeResultCode(); body.selectUnsubscribeResult(unsubscribeResult); resultMsg.Body = body; resultMsg.Id = message.Id; if (consumer != null) { try { delConsumer(consumer); } catch (System.Exception e) { // TODO } unsubscribeResultCode.Value = UnsubscribeResultCode.EnumType.success; } else { unsubscribeResultCode.Value = UnsubscribeResultCode.EnumType.subscriptionNotExists; } unsubscribeResult.Code = unsubscribeResultCode; try { transport.sendAsync(resultMsg); } catch (System.Exception e) { Console.WriteLine(e); } }
public virtual bool onReceive(MessageEnvelope message, ITransport transport) { if (message.Body.isSubscribeRequestSelected()) { MessageEnvelope resultMsg = new MessageEnvelope(); MessageBody body = new MessageBody(); SubscribeResult subscribeResult = new SubscribeResult(); SubscribeResultCode subscribeResultCode = new SubscribeResultCode(); body.selectSubscribeResult(subscribeResult); resultMsg.Body = (body); resultMsg.Id = message.Id; subscribeResultCode.Value = SubscribeResultCode.EnumType.unknownQueue; subscribeResult.Code = subscribeResultCode; try { transport.sendAsync(resultMsg); } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } } else if (message.Body.isUnsubscribeRequestSelected()) { MessageEnvelope resultMsg = new MessageEnvelope(); MessageBody body = new MessageBody(); UnsubscribeResult unsubscribeResult = new UnsubscribeResult(); UnsubscribeResultCode unsubscribeResultCode = new UnsubscribeResultCode(); body.selectUnsubscribeResult(unsubscribeResult); resultMsg.Body = (body); resultMsg.Id = message.Id; unsubscribeResultCode.Value = (UnsubscribeResultCode.EnumType.unknownQueue); unsubscribeResult.Code = (unsubscribeResultCode); try { transport.sendAsync(resultMsg); } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } } return(true); }