public async Task ConfirmsAndAcksWork() { IBunny bunny = Bunny.ConnectSingle(ConnectSimple.BasicAmqp); IQueue queue = bunny.Setup() .Queue("constraint") .MaxLength(1) .QueueExpiry(1500) .Bind("amq.direct", "constraint-key") .OverflowReject(); bool isNacked = false; bool isAcked = false; var publisher = bunny.Publisher <TestMessage>("amq.direct"); Func <BasicNackEventArgs, Task> nacker = ea => { isNacked = true; return(Task.CompletedTask); }; Func <BasicAckEventArgs, Task> acker = ea => { isAcked = true; return(Task.CompletedTask); }; await publisher.WithQueueDeclare(queue) .WithConfirm(acker, nacker) .WithRoutingKey("constraint-key") .SendAsync(new TestMessage() { Text = "Confirm-1st" }); await publisher.WithQueueDeclare(queue) .WithConfirm(acker, nacker) .SendAsync(new TestMessage() { Text = "Confirm-2nd" }); Assert.True(isAcked); Assert.True(isNacked); bunny.Dispose(); }
public async Task PublisherSimplySendsWithoutQueueReturnsFailure() { IBunny bunny = Bunny.ConnectSingle(ConnectSimple.BasicAmqp); IPublish <TestMessage> publisher = bunny.Publisher <TestMessage>(Exchange); OperationResult <TestMessage> result = await publisher.SendAsync(new TestMessage()); Assert.True(result.IsSuccess); bunny.Dispose(); }
public async Task ForceCreatesTheExchangeIfNotExists() { IBunny bunny = Bunny.ConnectSingle(ConnectSimple.BasicAmqp); IPublish <TestMessage> publisher = bunny.Publisher <TestMessage>("test-exchange"); OperationResult <TestMessage> result = await publisher.SendAsync(new TestMessage(), force : true); Assert.True(result.IsSuccess); bool removed_exchange = await bunny.Setup().DeleteExchangeAsync("test-exchange", force: true); Assert.True(removed_exchange); bunny.Dispose(); }
public async Task PublisherSimplySendsWitQueueReturnsSuccess() { IBunny bunny = Bunny.ConnectSingle(ConnectSimple.BasicAmqp); IPublish <TestMessage> publisher = bunny.Publisher <TestMessage>(Exchange); OperationResult <TestMessage> result = await publisher .WithQueueDeclare() .SendAsync(new TestMessage()); bool success = await bunny.Setup().DeleteQueueAsync(typeof(TestMessage).FullName, force: true); Assert.True(result.IsSuccess); Assert.True(success); bunny.Dispose(); }
public async Task MandatoryFailsWithoutQueue() { IBunny bunny = Bunny.ConnectSingle(ConnectSimple.BasicAmqp); bool isReturned = false; var publisher = bunny.Publisher <TestMessage>("amq.direct"); Func <BasicReturnEventArgs, Task> nacker = ea => { isReturned = true; return(Task.CompletedTask); }; await publisher.AsMandatory(nacker) .WithRoutingKey("not-any-bound-queue") .SendAsync(new TestMessage()); await Task.Delay(500); Assert.True(isReturned); bunny.Dispose(); }
public async Task MandatoryWorksWithQueue() { IBunny bunny = Bunny.ConnectSingle(ConnectSimple.BasicAmqp); bool isReturned = true; var publisher = bunny.Publisher <TestMessage>("amq.direct"); Func <BasicReturnEventArgs, Task> nacker = ea => { isReturned = false; return(Task.CompletedTask); }; await publisher.AsMandatory(nacker) .WithQueueDeclare() .SendAsync(new TestMessage() { Text = "Mandatory-succeeds" }); bool removed = await bunny.Setup().DeleteQueueAsync(typeof(TestMessage).FullName, force: true); Assert.True(isReturned); bunny.Dispose(); }