Skip to content

Commit 3748a0a

Browse files
committed
Allow exchange type to be a string
Fixes #66
1 parent 042a55a commit 3748a0a

File tree

5 files changed

+37
-10
lines changed

5 files changed

+37
-10
lines changed

RabbitMQ.AMQP.Client/IEntities.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,9 @@ public interface IExchangeSpecification : IEntitySpecification
149149
bool IsAutoDelete { get; }
150150
IExchangeSpecification AutoDelete(bool isAutoDelete);
151151

152-
ExchangeType ExchangeType { get; }
152+
string ExchangeType { get; }
153153
IExchangeSpecification Type(ExchangeType exchangeType);
154+
IExchangeSpecification Type(string exchangeType);
154155

155156
Dictionary<string, object> ExchangeArguments { get; }
156157
IExchangeSpecification Argument(string key, object value);

RabbitMQ.AMQP.Client/Impl/AmqpExchangeSpecification.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public AmqpExchangeSpecification(AmqpManagement management)
2222

2323
private string _name = "";
2424
private bool _autoDelete;
25-
private ExchangeType _type = Client.ExchangeType.DIRECT;
25+
private string _exchangeType = Client.ExchangeType.DIRECT.ToString();
2626
private readonly Map _arguments = new();
2727

2828
public Task DeclareAsync()
@@ -36,7 +36,7 @@ public Task DeclareAsync()
3636
{
3737
{ "auto_delete", _autoDelete },
3838
{ "arguments", _arguments },
39-
{ "type", _type.ToString().ToLower() },
39+
{ "type", _exchangeType.ToLowerInvariant() },
4040
{ "durable", true }
4141
};
4242

@@ -75,13 +75,19 @@ public IExchangeSpecification AutoDelete(bool autoDelete)
7575

7676
public bool IsAutoDelete => _autoDelete;
7777

78-
public IExchangeSpecification Type(ExchangeType type)
78+
public IExchangeSpecification Type(ExchangeType exchangeType)
7979
{
80-
_type = type;
80+
_exchangeType = exchangeType.ToString();
8181
return this;
8282
}
8383

84-
public ExchangeType ExchangeType => _type;
84+
public IExchangeSpecification Type(string exchangeType)
85+
{
86+
_exchangeType = exchangeType;
87+
return this;
88+
}
89+
90+
public string ExchangeType => _exchangeType;
8591

8692
public IExchangeSpecification Argument(string key, object value)
8793
{

RabbitMQ.AMQP.Client/Impl/RecordingTopologyListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ internal ExchangeSpec(IExchangeSpecification exchangeSpecification)
142142

143143
internal string ExchangeName => _exchangeSpecification.ExchangeName;
144144

145-
internal ExchangeType ExchangeType => _exchangeSpecification.ExchangeType;
145+
internal string ExchangeType => _exchangeSpecification.ExchangeType;
146146

147147
internal bool IsAutoDelete => _exchangeSpecification.IsAutoDelete;
148148

RabbitMQ.AMQP.Client/PublicAPI.Unshipped.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,11 @@ RabbitMQ.AMQP.Client.IExchangeSpecification.Arguments(System.Collections.Generic
155155
RabbitMQ.AMQP.Client.IExchangeSpecification.AutoDelete(bool isAutoDelete) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
156156
RabbitMQ.AMQP.Client.IExchangeSpecification.ExchangeArguments.get -> System.Collections.Generic.Dictionary<string!, object!>!
157157
RabbitMQ.AMQP.Client.IExchangeSpecification.ExchangeName.get -> string!
158-
RabbitMQ.AMQP.Client.IExchangeSpecification.ExchangeType.get -> RabbitMQ.AMQP.Client.ExchangeType
158+
RabbitMQ.AMQP.Client.IExchangeSpecification.ExchangeType.get -> string!
159159
RabbitMQ.AMQP.Client.IExchangeSpecification.IsAutoDelete.get -> bool
160160
RabbitMQ.AMQP.Client.IExchangeSpecification.Name(string! exchangeName) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
161161
RabbitMQ.AMQP.Client.IExchangeSpecification.Type(RabbitMQ.AMQP.Client.ExchangeType exchangeType) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
162+
RabbitMQ.AMQP.Client.IExchangeSpecification.Type(string! exchangeType) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
162163
RabbitMQ.AMQP.Client.ILifeCycle
163164
RabbitMQ.AMQP.Client.ILifeCycle.ChangeState -> RabbitMQ.AMQP.Client.LifeCycleCallBack!
164165
RabbitMQ.AMQP.Client.ILifeCycle.CloseAsync() -> System.Threading.Tasks.Task!
@@ -262,10 +263,11 @@ RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.DeclareAsync() -> System.Thr
262263
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.DeleteAsync() -> System.Threading.Tasks.Task!
263264
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.ExchangeArguments.get -> System.Collections.Generic.Dictionary<string!, object!>!
264265
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.ExchangeName.get -> string!
265-
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.ExchangeType.get -> RabbitMQ.AMQP.Client.ExchangeType
266+
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.ExchangeType.get -> string!
266267
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.IsAutoDelete.get -> bool
267268
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.Name(string! name) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
268-
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.Type(RabbitMQ.AMQP.Client.ExchangeType type) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
269+
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.Type(RabbitMQ.AMQP.Client.ExchangeType exchangeType) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
270+
RabbitMQ.AMQP.Client.Impl.AmqpExchangeSpecification.Type(string! exchangeType) -> RabbitMQ.AMQP.Client.IExchangeSpecification!
269271
RabbitMQ.AMQP.Client.Impl.AmqpManagement
270272
RabbitMQ.AMQP.Client.Impl.AmqpManagement.Binding() -> RabbitMQ.AMQP.Client.IBindingSpecification!
271273
RabbitMQ.AMQP.Client.Impl.AmqpManagement.Exchange() -> RabbitMQ.AMQP.Client.IExchangeSpecification!

Tests/Management/ManagementTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,24 @@ public async Task SimpleDeclareAndDeleteExchangeWithName()
295295
await SystemUtils.WaitUntilExchangeDeletedAsync(exchangeSpec);
296296
}
297297

298+
[Fact]
299+
public async Task DeclareAndDeleteExchangeWithStringType()
300+
{
301+
Assert.NotNull(_connection);
302+
Assert.NotNull(_management);
303+
304+
IExchangeSpecification exchangeSpec = _management.Exchange(_exchangeName).Type("direct");
305+
await exchangeSpec.DeclareAsync();
306+
307+
await _management.Exchange(_exchangeName).Type("direct").DeclareAsync();
308+
309+
await SystemUtils.WaitUntilExchangeExistsAsync(exchangeSpec);
310+
311+
await exchangeSpec.DeleteAsync();
312+
313+
await SystemUtils.WaitUntilExchangeDeletedAsync(exchangeSpec);
314+
}
315+
298316
[Fact]
299317
public async Task ExchangeWithEmptyNameShouldRaiseAnException()
300318
{

0 commit comments

Comments
 (0)