public RabbitConsumerAttribute( string queueName, AcknowledgementType acknowledgementType = AcknowledgementType.AutoAck, bool nackOnException = true) { this.QueueName = queueName; this.AcknowledgementType = acknowledgementType; this.NackOnException = nackOnException; }
public async Task ShouldNotSendAcknowledgeReceived_WhenAcknowledgementTypeIsNotReceived( AcknowledgementType acknowledgementType, MessageWithMetadata message, [Frozen] Mock <IConnection> connection, ReceivedAcknowledgingConnection sut) { connection.Setup(x => x.ReceiveAsync(Cts.Token)) .ReturnsAsync(message); message.Metadata !.AcknowledgementType = acknowledgementType; await sut.ReceiveAsync(Cts.Token); connection.Verify(x => x.SendAsync(It.IsAny <object>(), Cts.Token), Times.Never); }
public async ValueTask SendAsync( object message, Action <MessageMetadata>?metadataSetter, AcknowledgementType acknowledgementType, CancellationToken cancellationToken) { string?subscriptionId = null; // For acknowledgement. if (!IsConnected) { throw new InvalidOperationException("Not connected."); } var metadata = _metadataFactory.CreateFor(message); metadataSetter?.Invoke(metadata); metadata.AcknowledgementType = acknowledgementType; var reconnectedTimes = 0; while (reconnectedTimes < _reconnectRetryCount) { // This creates a deadlock. Come up with another solution. // Do not allow starting new operations while reconnect is happening. // await WaitForReconnectAsync(cancellationToken).ConfigureAwait(false); var resource = GetConnectionResource(); try { TaskCompletionSource?tcs = null; if (acknowledgementType == AcknowledgementType.Received) { // Setup subscription for acknowledgement. tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); ValueTask Handler(AcknowledgeReceived acknowledgeReceived) { if (acknowledgeReceived.MessageId == metadata.MessageId) { tcs.SetResult(); } return(default);
public void ShouldRequireAcknowledgement_WhenAcknowledgementTypeIsNotNone( AcknowledgementType sut) { Assert.True(sut.IsAcknowledgementRequired()); }
/// <summary> /// Parameterized constructor /// </summary> /// <param name="dtype">Delivery receipt type</param> /// <param name="atype">Acknowledgement receipt type</param> /// <param name="intermediateNotification">Whether intermediate notification is requested.</param> public registered_delivery(DeliveryReceiptType dtype, AcknowledgementType atype, bool intermediateNotification) : base(0) { this.DeliveryReceipt = dtype; this.OriginationAcknowledgement = atype; this.IntermediateNotification = intermediateNotification; }
public static bool IsAcknowledgementRequired(this AcknowledgementType acknowledgementType) => acknowledgementType != AcknowledgementType.None;