public static Message Dequeue(this IRabbitMQReader rabbitMessageQueueReader, RabbitMQTaskQueueBinding binding, MessageEncoderFactory messageEncoderFactory, TimeSpan timeout, CancellationToken cancelToken) { ulong deliveryTag; var timeoutTimer = TimeoutTimer.StartNew(timeout); var msg = rabbitMessageQueueReader.Dequeue(binding, messageEncoderFactory, timeoutTimer.RemainingTime, cancelToken, out deliveryTag); rabbitMessageQueueReader.AcknowledgeMessage(deliveryTag, timeoutTimer.RemainingTime, cancelToken); return msg; }
public RabbitMQTaskQueueRequestChannel(BindingContext context, ChannelManagerBase channelManager, EndpointAddress remoteAddress, Uri via, BufferManager bufferManger, RabbitMQTaskQueueBinding binding) : base(context, channelManager, binding, new EndpointAddress(RabbitMQTaskQueueUri.Create(remoteAddress.Uri.Host, remoteAddress.Uri.Port, $"r{Guid.NewGuid():N}"))) { MethodInvocationTrace.Write(); RemoteAddress = remoteAddress; _bufferMgr = bufferManger; _requestFunc = Request; Via = via; RemoteUri = new RabbitMQTaskQueueUri(remoteAddress.Uri.ToString()); }
protected RabbitMQTaskQueueDuplexChannelBase(BindingContext context, ChannelManagerBase channelManager, RabbitMQTaskQueueBinding binding, EndpointAddress remoteAddress, EndpointAddress localAddress) : base(context, channelManager, binding, localAddress) { MethodInvocationTrace.Write(); _tryReceiveMethod = TryReceive; _receiveFunc = Receive; _waitForMsgFunc = WaitForMessage; _sendFunc = Send; _remoteAddress = remoteAddress; _closeOutputSessionFunc = CloseOutputSession; _remoteUri = (remoteAddress.Uri == EndpointAddress.AnonymousUri) ? null : new RabbitMQTaskQueueUri(remoteAddress.Uri.ToString()); }
public RabbitMQTaskQueueRequestContext(Message requestMessage, RabbitMQTaskQueueBinding binding, EndpointAddress localAddress, MessageEncoderFactory msgEncoderFactory, BufferManager bufferManager, IRabbitMQWriter queueWriter, ulong deliveryTag, IRabbitMQReader queueReader, IDisposable readerHandle) { _opMgr = new ConcurrentOperationManager(GetType().FullName); _queueReader = queueReader; _readerHandle = readerHandle; _deliveryTag = deliveryTag; _bufferMgr = bufferManager; _msgEncoderFactory = msgEncoderFactory; _replyToAddress = localAddress; _binding = binding; _rqMsg = requestMessage; _reply = Reply; _queueWriter = queueWriter; }
public static Message Dequeue(this IRabbitMQReader rabbitMessageQueueReader, RabbitMQTaskQueueBinding binding, MessageEncoderFactory messageEncoderFactory, TimeSpan timeout, CancellationToken cancelToken, out ulong deliveryTag) { var timeoutTimer = TimeoutTimer.StartNew(timeout); var msg = rabbitMessageQueueReader.Dequeue(timeoutTimer.RemainingTime, cancelToken); deliveryTag = msg.DeliveryTag; Message result; try { result = messageEncoderFactory.Encoder.ReadMessage(msg.Body, (int)binding.MaxReceivedMessageSize); } catch { rabbitMessageQueueReader.RejectMessage(msg.DeliveryTag, timeoutTimer.RemainingTime, cancelToken); throw; } return result; }