private void OnMessage(IReceiverLink receiver, global::Amqp.Message amqpMessage) { NmsMessage message; try { message = AmqpCodec.DecodeMessage(this, amqpMessage).AsMessage(); } catch (Exception e) { Tracer.Error($"Error on transform: {e.Message}"); // Mark message as undeliverable link.Modify(amqpMessage, true, true); return; } // Let the message do any final processing before sending it onto a consumer. // We could defer this to a later stage such as the NmsConnection or even in // the NmsMessageConsumer dispatch method if we needed to. message.OnDispatch(); InboundMessageDispatch inboundMessageDispatch = new InboundMessageDispatch { Message = message, ConsumerId = info.Id, ConsumerInfo = info, }; AddMessage(inboundMessageDispatch); IProviderListener providerListener = session.Connection.Provider.Listener; providerListener.OnInboundMessage(inboundMessageDispatch); }
public void Recover() { Tracer.Debug($"Session Recover for consumer: {info.Id}"); List <InboundMessageDispatch> redispatchList = new List <InboundMessageDispatch>(); foreach (var envelope in GetMessages().Where(x => x.IsDelivered)) { envelope.IsDelivered = false; envelope.Message.Facade.RedeliveryCount++; envelope.EnqueueFirst = true; redispatchList.Add(envelope); } IProviderListener providerListener = session.Connection.Provider.Listener; for (int i = redispatchList.Count - 1; i >= 0; i--) { providerListener.OnInboundMessage(redispatchList[i]); } }
public void SetProviderListener(IProviderListener providerListener) { CheckClosed(); listener = providerListener; }
public void SetProviderListener(IProviderListener providerListener) { listener = providerListener; }