Skip to content

Commit 03bbe15

Browse files
committed
add missing queues configurations
Signed-off-by: Gabriele Santomaggio <[email protected]>
1 parent 6764374 commit 03bbe15

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

RabbitMQ.AMQP.Client/IEntities.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,18 @@ public enum OverFlowStrategy
3535
{
3636
DropHead,
3737
RejectPublish,
38-
3938
RejectPublishDlx
4039
// DROP_HEAD("drop-head"),
4140
// REJECT_PUBLISH("reject-publish"),
4241
// REJECT_PUBLISH_DLX("reject-publish-dlx");
4342
}
4443

44+
public enum LeaderLocatorStrategy
45+
{
46+
ClientLocal,
47+
Balanced
48+
}
49+
4550
public interface IQueueSpecification : IEntityInfoSpecification<IQueueInfo>
4651
{
4752
public string QueueName { get; }
@@ -92,6 +97,10 @@ public interface IStreamSpecification
9297
public IStreamSpecification MaxSegmentSizeBytes(ByteCapacity maxSegmentSize);
9398

9499
public IStreamSpecification InitialClusterSize(int initialClusterSize);
100+
101+
public IStreamSpecification LeaderLocator(LeaderLocatorStrategy leaderLocatorStrategy);
102+
103+
public IStreamSpecification FileSizePerChunk(ByteCapacity fileSizePerChunk);
95104

96105
public IQueueSpecification Queue();
97106
}

RabbitMQ.AMQP.Client/Impl/AmqpQueueSpecification.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,25 @@ public IStreamSpecification InitialClusterSize(int initialClusterSize)
397397
return this;
398398
}
399399

400+
public IStreamSpecification LeaderLocator(LeaderLocatorStrategy leaderLocatorStrategy)
401+
{
402+
_parent._queueArguments["x-queue-leader-locator"] = leaderLocatorStrategy switch
403+
{
404+
LeaderLocatorStrategy.ClientLocal => "client-local",
405+
LeaderLocatorStrategy.Balanced => "balanced",
406+
_ => throw new ArgumentOutOfRangeException(nameof(leaderLocatorStrategy), leaderLocatorStrategy, null)
407+
};
408+
return this;
409+
}
410+
411+
public IStreamSpecification FileSizePerChunk(ByteCapacity fileSizePerChunk)
412+
{
413+
Utils.ValidatePositive("x-stream-file-size-per-chunk", fileSizePerChunk);
414+
_parent._queueArguments["x-stream-file-size-per-chunk"] = (long)fileSizePerChunk;
415+
return this;
416+
417+
}
418+
400419
public IQueueSpecification Queue()
401420
{
402421
return _parent;

RabbitMQ.AMQP.Client/PublicAPI.Unshipped.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,9 @@ RabbitMQ.AMQP.Client.Impl.AmqpRpcServerBuilder.RequestQueue(RabbitMQ.AMQP.Client
499499
RabbitMQ.AMQP.Client.Impl.AmqpRpcServerBuilder.RequestQueue(string! requestQueue) -> RabbitMQ.AMQP.Client.IRpcServerBuilder!
500500
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification
501501
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification.AmqpStreamSpecification(RabbitMQ.AMQP.Client.Impl.AmqpQueueSpecification! parent) -> void
502+
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification.FileSizePerChunk(RabbitMQ.AMQP.Client.ByteCapacity! fileSizePerChunk) -> RabbitMQ.AMQP.Client.IStreamSpecification!
502503
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification.InitialClusterSize(int initialClusterSize) -> RabbitMQ.AMQP.Client.IStreamSpecification!
504+
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification.LeaderLocator(RabbitMQ.AMQP.Client.LeaderLocatorStrategy leaderLocatorStrategy) -> RabbitMQ.AMQP.Client.IStreamSpecification!
503505
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification.MaxAge(System.TimeSpan maxAge) -> RabbitMQ.AMQP.Client.IStreamSpecification!
504506
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification.MaxSegmentSizeBytes(RabbitMQ.AMQP.Client.ByteCapacity! maxSegmentSize) -> RabbitMQ.AMQP.Client.IStreamSpecification!
505507
RabbitMQ.AMQP.Client.Impl.AmqpStreamSpecification.Queue() -> RabbitMQ.AMQP.Client.IQueueSpecification!
@@ -680,12 +682,17 @@ RabbitMQ.AMQP.Client.IRpcServerBuilder.ReplyPostProcessor(System.Func<RabbitMQ.A
680682
RabbitMQ.AMQP.Client.IRpcServerBuilder.RequestQueue(RabbitMQ.AMQP.Client.IQueueSpecification! requestQueue) -> RabbitMQ.AMQP.Client.IRpcServerBuilder!
681683
RabbitMQ.AMQP.Client.IRpcServerBuilder.RequestQueue(string! requestQueue) -> RabbitMQ.AMQP.Client.IRpcServerBuilder!
682684
RabbitMQ.AMQP.Client.IStreamSpecification
685+
RabbitMQ.AMQP.Client.IStreamSpecification.FileSizePerChunk(RabbitMQ.AMQP.Client.ByteCapacity! fileSizePerChunk) -> RabbitMQ.AMQP.Client.IStreamSpecification!
683686
RabbitMQ.AMQP.Client.IStreamSpecification.InitialClusterSize(int initialClusterSize) -> RabbitMQ.AMQP.Client.IStreamSpecification!
687+
RabbitMQ.AMQP.Client.IStreamSpecification.LeaderLocator(RabbitMQ.AMQP.Client.LeaderLocatorStrategy leaderLocatorStrategy) -> RabbitMQ.AMQP.Client.IStreamSpecification!
684688
RabbitMQ.AMQP.Client.IStreamSpecification.MaxAge(System.TimeSpan maxAge) -> RabbitMQ.AMQP.Client.IStreamSpecification!
685689
RabbitMQ.AMQP.Client.IStreamSpecification.MaxSegmentSizeBytes(RabbitMQ.AMQP.Client.ByteCapacity! maxSegmentSize) -> RabbitMQ.AMQP.Client.IStreamSpecification!
686690
RabbitMQ.AMQP.Client.IStreamSpecification.Queue() -> RabbitMQ.AMQP.Client.IQueueSpecification!
687691
RabbitMQ.AMQP.Client.IUriSelector
688692
RabbitMQ.AMQP.Client.IUriSelector.Select(System.Collections.Generic.ICollection<System.Uri!>! uris) -> System.Uri!
693+
RabbitMQ.AMQP.Client.LeaderLocatorStrategy
694+
RabbitMQ.AMQP.Client.LeaderLocatorStrategy.Balanced = 1 -> RabbitMQ.AMQP.Client.LeaderLocatorStrategy
695+
RabbitMQ.AMQP.Client.LeaderLocatorStrategy.ClientLocal = 0 -> RabbitMQ.AMQP.Client.LeaderLocatorStrategy
689696
RabbitMQ.AMQP.Client.LifeCycleCallBack
690697
RabbitMQ.AMQP.Client.MessageHandler
691698
RabbitMQ.AMQP.Client.MetricsReporter

0 commit comments

Comments
 (0)